# -*- coding: utf- 8 -*-
import wx
import wx.lib.agw.gradientbutton as gbtn
import urllib2, urllib
from urllib2 import HTTPError, URLError
import threading
import time
import cookielib
import sys
import webbrowser
class LoginComunio:
def __init__( self,user,password,threads,url_base,cookie) :
#Inicializamos variables
self.user = user
self.password = password
self.num_threads = threads
self.url_base = url_base
self.cookies = None
self.ua = 'Yo no pago muahahahahah'
self.run = False
self.exito = False
self.lista_threads = [ ]
self.intento = 0
#Instalamos manejador de cookies
self.cookie_j = cookielib.LWPCookieJar ( )
ck = cookielib.Cookie ( version= 0 , name= 'PHPSESSID' ,value= cookie,port= None,port_specified= False ,domain= url_base,domain_specified= False , domain_initial_dot= False ,path= '/' ,path_specified= True ,secure= False ,expires= None,discard= True ,comment= None,comment_url= None,rest= { 'HttpOnly' : None} ,rfc2109= False )
self.cookie_j .set_cookie ( ck)
cookie_h = urllib2.HTTPCookieProcessor ( self.cookie_j )
opener = urllib2.build_opener ( cookie_h)
urllib2.install_opener ( opener)
def Activar( self) :
self.intento = 0
self.run = True
for i in range( self.num_threads ) :
t
= threading.
Thread ( target
= self.
Login ) self.lista_threads .append ( t)
t.start ( )
def Desactivar( self) :
self.run = False
def ThreadsFinalizados( self) :
for t in self.lista_threads :
if t.isAlive ( ) == True : return False
return True
def Login( self) :
lock = threading.Lock ( )
url_login = 'http://' + self.url_base + '/login.phtml'
postdata = urllib.urlencode ( { 'login' : self.user ,'pass' : self.password ,'action' : 'login' ,'>>Login_x' : '33' } )
while self.run :
try :
request
= urllib2.
Request ( url_login,headers
= { 'User-Agent' : self.
ua } ) fichero = urllib2.urlopen ( request,postdata)
if fichero.geturl ( ) != url_login:
lock.acquire ( )
self.Desactivar ( )
self.exito = True
lock.release ( )
else :
lock.acquire ( )
self.intento = self.intento + 1
lock.release ( )
except HTTPError, e:
None
except URLError, e:
None
TIMER_ID = wx.NewId ( )
class MyApp( wx.App ) :
def OnInit( self) :
self.frame = MainFrame( None,title= "COMUNEITOR v0.1" ,size= ( 380 ,300 ) )
self.SetTopWindow ( self.frame )
self.frame .Show ( )
return True
class MainFrame
( wx.
Frame ) : def __init__( self, * args, ** kwargs) :
super ( MainFrame, self) .__init__( * args, ** kwargs)
#Atributos
self.panel_principal = MainPanel( self)
self.CreateStatusBar ( )
#Layout
sizer = wx.BoxSizer ( wx.HORIZONTAL )
sizer.Add ( self.panel_principal ,1 ,wx.EXPAND )
self.SetSizer ( sizer)
class MainPanel
( wx.
Panel ) : def __init__( self,parent) :
super ( MainPanel, self) .__init__( parent)
self.cookie = None
#Atributos
self._BarraHerramientas( )
self.servidor = wx.StaticText ( self,label= 'Servidor' )
self.
servidor_input = wx.
Choice ( self,choices
= [ 'www.comunio.es' ,
'www14.comunio.es' ] ) self.servidor_input .SetSelection ( 0 )
self.user = wx.StaticText ( self,label= 'Usuario' )
self.user_input = wx.TextCtrl ( self,size= ( 150 ,25 ) )
self.password = wx.StaticText ( self,label= 'Password' )
self.password_input = wx.TextCtrl ( self,size= ( 150 ,25 ) ,style= wx.TE_PASSWORD )
self.cookie = wx.StaticText ( self,label= 'Cookie' )
self.cookie_input = wx.TextCtrl ( self,size= ( 280 ,25 ) )
#Layout
button_sizer = wx.BoxSizer ( wx.HORIZONTAL )
button_sizer.Add ( self.lista_herramientas [ 0 ] ,0 ,wx.LEFT ,50 )
button_sizer.Add ( self.lista_herramientas [ 1 ] ,0 ,wx.LEFT ,10 )
servidor_sizer = wx.BoxSizer ( wx.HORIZONTAL )
servidor_sizer.Add ( self.servidor ,0 ,wx.LEFT ,7 )
servidor_sizer.Add ( self.servidor_input ,0 ,wx.LEFT ,7 )
user_sizer = wx.BoxSizer ( wx.HORIZONTAL )
user_sizer.Add ( self.user ,0 ,wx.LEFT ,7 )
user_sizer.Add ( self.user_input ,0 ,wx.LEFT ,17 )
password_sizer = wx.BoxSizer ( wx.HORIZONTAL )
password_sizer.Add ( self.password ,0 ,wx.LEFT ,7 )
password_sizer.Add ( self.password_input ,0 ,wx.LEFT ,7 )
cookie_sizer = wx.BoxSizer ( wx.HORIZONTAL )
cookie_sizer.Add ( self.cookie ,0 ,wx.LEFT ,7 )
cookie_sizer.Add ( self.cookie_input ,0 ,wx.LEFT ,21 )
vsizer = wx.BoxSizer ( wx.VERTICAL )
vsizer.Add ( button_sizer,0 ,wx.TOP ,7 )
vsizer.Add ( servidor_sizer,1 ,wx.TOP ,7 )
vsizer.Add ( user_sizer,1 ,wx.TOP ,0 )
vsizer.Add ( password_sizer,1 ,wx.TOP ,0 )
vsizer.Add ( cookie_sizer,1 ,wx.TOP ,0 )
self.SetSizer ( vsizer)
#Eventos
self.Bind ( wx.EVT_BUTTON ,self.Activar ,self.lista_herramientas [ 0 ] )
self.Bind ( wx.EVT_BUTTON ,self.Desactivar ,self.lista_herramientas [ 1 ] )
wx.EVT_TIMER ( self,TIMER_ID,self.ActualizarStatus )
self.
timer = wx.
Timer ( self,TIMER_ID
) f = open( 'cookie.txt' , 'r+' )
cookie_fichero = f.readline ( ) .replace ( '\n ' ,'' )
self.cookie_input .SetValue ( cookie_fichero)
f.close ( )
def _BarraHerramientas( self) :
self.lista_herramientas = [ ]
bmp = wx.Bitmap ( './activar.png' ,wx.BITMAP_TYPE_PNG )
boton = gbtn.GradientButton ( self,label= 'Activar' ,bitmap= bmp)
boton.SetToolTipString ( 'Activar' )
self.lista_herramientas .append ( boton)
bmp = wx.Bitmap ( './desactivar.png' ,wx.BITMAP_TYPE_PNG )
boton = gbtn.GradientButton ( self,label= 'Desactivar' ,bitmap= bmp)
boton.SetToolTipString ( 'Desactivar' )
self.lista_herramientas .append ( boton)
def ActualizarStatus( self,event) :
padre = self.GetParent ( )
if self.lc .exito == True :
self.timer .Stop ( )
servidor = ''
eleccion = self.servidor_input .GetCurrentSelection ( )
if eleccion == 0 : servidor = 'http://w...content-available-to-author-only...o.es/team_news.phtml'
elif eleccion == 1 : servidor = 'http://w...content-available-to-author-only...o.es/team_news.phtml'
padre.PushStatusText ( 'Logueados despues de ' + str( self.lc .intento ) + ' intentos. Cookie disponible' )
webbrowser.open ( servidor)
else :
padre.PushStatusText ( str( self.lc .intento ) + ' intentos fallidos' )
def Activar( self,event) :
cookie_entrada = str( self.cookie_input .GetValue ( ) )
f_read = open( 'cookie.txt' ,'r+' )
cookie_fichero = f_read.readline ( ) .replace ( '\n ' ,'' )
f_read.close ( )
f_write = open( 'cookie.txt' ,'r+' )
if cookie_entrada != '' :
f_write.write ( cookie_entrada)
self.cookie = cookie_entrada
else :
self.cookie = cookie_fichero
f_write.close ( )
t
= threading.
Thread ( target
= self.
ActivarThread ) t.start ( )
self.timer .Start ( 300 )
def ActivarThread( self) :
servidor = ''
eleccion = self.servidor_input .GetCurrentSelection ( )
if eleccion == 0 : servidor = 'www.comunio.es'
elif eleccion == 1 : servidor = 'www14.comunio.es'
self.lc = LoginComunio( str( self.user_input .GetValue ( ) ) ,str( self.password_input .GetValue ( ) ) ,10 ,servidor,self.cookie )
self.lc .Activar ( )
def Desactivar( self,event) :
self.lc .Desactivar ( )
self.timer .Stop ( )
if __name__ == "__main__" :
app = MyApp( False )
app.MainLoop ( )
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KaW1wb3J0IHd4CmltcG9ydCB3eC5saWIuYWd3LmdyYWRpZW50YnV0dG9uIGFzIGdidG4KaW1wb3J0IHVybGxpYjIsIHVybGxpYgpmcm9tIHVybGxpYjIgaW1wb3J0IEhUVFBFcnJvciwgVVJMRXJyb3IKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgdGltZQppbXBvcnQgY29va2llbGliCmltcG9ydCBzeXMKaW1wb3J0IHdlYmJyb3dzZXIKCmNsYXNzIExvZ2luQ29tdW5pbzoKCWRlZiBfX2luaXRfXyhzZWxmLHVzZXIscGFzc3dvcmQsdGhyZWFkcyx1cmxfYmFzZSxjb29raWUpOgoJCSNJbmljaWFsaXphbW9zIHZhcmlhYmxlcwoJCXNlbGYudXNlciA9IHVzZXIKCQlzZWxmLnBhc3N3b3JkID0gcGFzc3dvcmQKCQlzZWxmLm51bV90aHJlYWRzID0gdGhyZWFkcwoJCXNlbGYudXJsX2Jhc2UgPSB1cmxfYmFzZQoJCXNlbGYuY29va2llcyA9IE5vbmUKCQlzZWxmLnVhID0gJ1lvIG5vIHBhZ28gbXVhaGFoYWhhaGFoJwoJCXNlbGYucnVuID0gRmFsc2UKCQlzZWxmLmV4aXRvID0gRmFsc2UKCQlzZWxmLmxpc3RhX3RocmVhZHMgPSBbXQoJCXNlbGYuaW50ZW50byA9IDAKCQkjSW5zdGFsYW1vcyBtYW5lamFkb3IgZGUgY29va2llcwogICAgICAgICAgICAgICAgc2VsZi5jb29raWVfaiA9IGNvb2tpZWxpYi5MV1BDb29raWVKYXIoKQogICAgICAgICAgICAgICAgY2sgPSBjb29raWVsaWIuQ29va2llKHZlcnNpb249MCwgbmFtZT0nUEhQU0VTU0lEJyx2YWx1ZT1jb29raWUscG9ydD1Ob25lLHBvcnRfc3BlY2lmaWVkPUZhbHNlLGRvbWFpbj11cmxfYmFzZSxkb21haW5fc3BlY2lmaWVkPUZhbHNlLCBkb21haW5faW5pdGlhbF9kb3Q9RmFsc2UscGF0aD0nLycscGF0aF9zcGVjaWZpZWQ9VHJ1ZSxzZWN1cmU9RmFsc2UsZXhwaXJlcz1Ob25lLGRpc2NhcmQ9VHJ1ZSxjb21tZW50PU5vbmUsY29tbWVudF91cmw9Tm9uZSxyZXN0PXsnSHR0cE9ubHknOk5vbmV9LHJmYzIxMDk9RmFsc2UpCiAgICAgICAgICAgICAgICBzZWxmLmNvb2tpZV9qLnNldF9jb29raWUoY2spCiAgICAgICAgICAgICAgICBjb29raWVfaCA9IHVybGxpYjIuSFRUUENvb2tpZVByb2Nlc3NvcihzZWxmLmNvb2tpZV9qKQogICAgICAgICAgICAgICAgb3BlbmVyID0gdXJsbGliMi5idWlsZF9vcGVuZXIoY29va2llX2gpCiAgICAgICAgICAgICAgICB1cmxsaWIyLmluc3RhbGxfb3BlbmVyKG9wZW5lcikKCglkZWYgQWN0aXZhcihzZWxmKToKCQlzZWxmLmludGVudG8gPSAwCgkJc2VsZi5ydW4gPSBUcnVlCgkJZm9yIGkgaW4gcmFuZ2Uoc2VsZi5udW1fdGhyZWFkcyk6CgkJCXQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLkxvZ2luKQoJCQlzZWxmLmxpc3RhX3RocmVhZHMuYXBwZW5kKHQpCgkJCXQuc3RhcnQoKQoKCWRlZiBEZXNhY3RpdmFyKHNlbGYpOgoJCXNlbGYucnVuID0gRmFsc2UKCglkZWYgVGhyZWFkc0ZpbmFsaXphZG9zKHNlbGYpOgoJCWZvciB0IGluIHNlbGYubGlzdGFfdGhyZWFkczoKCQkJaWYgdC5pc0FsaXZlKCkgPT0gVHJ1ZTogcmV0dXJuIEZhbHNlCgkJcmV0dXJuIFRydWUKCglkZWYgTG9naW4oc2VsZik6CgkJbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKCQl1cmxfbG9naW4gPSAnaHR0cDovLycrc2VsZi51cmxfYmFzZSsnL2xvZ2luLnBodG1sJwoJCXBvc3RkYXRhID0gdXJsbGliLnVybGVuY29kZSh7J2xvZ2luJzpzZWxmLnVzZXIsJ3Bhc3MnOnNlbGYucGFzc3dvcmQsJ2FjdGlvbic6J2xvZ2luJywnPj5Mb2dpbl94JzonMzMnfSkKCQl3aGlsZSBzZWxmLnJ1bjoKCQkJdHJ5OgoJCQkJcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmxfbG9naW4saGVhZGVycz17J1VzZXItQWdlbnQnOnNlbGYudWF9KQoJCQkJZmljaGVybyA9IHVybGxpYjIudXJsb3BlbihyZXF1ZXN0LHBvc3RkYXRhKQoJCQkJaWYgZmljaGVyby5nZXR1cmwoKSAhPSB1cmxfbG9naW46CgkJCQkJbG9jay5hY3F1aXJlKCkKCQkJCQlzZWxmLkRlc2FjdGl2YXIoKQoJCQkJCXNlbGYuZXhpdG8gPSBUcnVlCgkJCQkJbG9jay5yZWxlYXNlKCkKCQkJCWVsc2U6CgkJCQkJbG9jay5hY3F1aXJlKCkKCQkJCQlzZWxmLmludGVudG8gPSBzZWxmLmludGVudG8gKyAxCgkJCQkJbG9jay5yZWxlYXNlKCkKCQkJZXhjZXB0IEhUVFBFcnJvciwgZToKCQkJCU5vbmUKCQkJZXhjZXB0IFVSTEVycm9yLCBlOgoJCQkJTm9uZQoKVElNRVJfSUQgPSB3eC5OZXdJZCgpCgpjbGFzcyBNeUFwcCh3eC5BcHApOgoJZGVmIE9uSW5pdChzZWxmKToKCQlzZWxmLmZyYW1lID0gTWFpbkZyYW1lKE5vbmUsdGl0bGU9IkNPTVVORUlUT1IgdjAuMSIsc2l6ZT0oMzgwLDMwMCkpCgkJc2VsZi5TZXRUb3BXaW5kb3coc2VsZi5mcmFtZSkKCQlzZWxmLmZyYW1lLlNob3coKQoJCXJldHVybiBUcnVlCgpjbGFzcyBNYWluRnJhbWUod3guRnJhbWUpOgoJZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CgkJc3VwZXIoTWFpbkZyYW1lLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCgkJI0F0cmlidXRvcwoJCXNlbGYucGFuZWxfcHJpbmNpcGFsID0gTWFpblBhbmVsKHNlbGYpCgkJc2VsZi5DcmVhdGVTdGF0dXNCYXIoKQoJCSNMYXlvdXQKCQlzaXplciA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCgkJc2l6ZXIuQWRkKHNlbGYucGFuZWxfcHJpbmNpcGFsLDEsd3guRVhQQU5EKQoJCXNlbGYuU2V0U2l6ZXIoc2l6ZXIpCgogICAgICAKY2xhc3MgTWFpblBhbmVsKHd4LlBhbmVsKToKCWRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCk6CgkJc3VwZXIoTWFpblBhbmVsLCBzZWxmKS5fX2luaXRfXyhwYXJlbnQpCiAgICAgICAgICAgICAgICBzZWxmLmNvb2tpZSA9IE5vbmUKICAgICAgICAgICAgICAgICNBdHJpYnV0b3MKCQlzZWxmLl9CYXJyYUhlcnJhbWllbnRhcygpCgkJc2VsZi5zZXJ2aWRvciA9IHd4LlN0YXRpY1RleHQoc2VsZixsYWJlbD0nU2Vydmlkb3InKQoJCXNlbGYuc2Vydmlkb3JfaW5wdXQgPSB3eC5DaG9pY2Uoc2VsZixjaG9pY2VzPVsnd3d3LmNvbXVuaW8uZXMnLCd3d3cxNC5jb211bmlvLmVzJ10pCgkJc2VsZi5zZXJ2aWRvcl9pbnB1dC5TZXRTZWxlY3Rpb24oMCkKCQlzZWxmLnVzZXIgPSB3eC5TdGF0aWNUZXh0KHNlbGYsbGFiZWw9J1VzdWFyaW8nKQoJCXNlbGYudXNlcl9pbnB1dCA9IHd4LlRleHRDdHJsKHNlbGYsc2l6ZT0oMTUwLDI1KSkKCQlzZWxmLnBhc3N3b3JkID0gd3guU3RhdGljVGV4dChzZWxmLGxhYmVsPSdQYXNzd29yZCcpCgkJc2VsZi5wYXNzd29yZF9pbnB1dCA9IHd4LlRleHRDdHJsKHNlbGYsc2l6ZT0oMTUwLDI1KSxzdHlsZT13eC5URV9QQVNTV09SRCkKCQlzZWxmLmNvb2tpZSA9IHd4LlN0YXRpY1RleHQoc2VsZixsYWJlbD0nQ29va2llJykKCQlzZWxmLmNvb2tpZV9pbnB1dCA9IHd4LlRleHRDdHJsKHNlbGYsc2l6ZT0oMjgwLDI1KSkKCQkjTGF5b3V0CgkJYnV0dG9uX3NpemVyID0gd3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKCQlidXR0b25fc2l6ZXIuQWRkKHNlbGYubGlzdGFfaGVycmFtaWVudGFzWzBdLDAsd3guTEVGVCw1MCkKCQlidXR0b25fc2l6ZXIuQWRkKHNlbGYubGlzdGFfaGVycmFtaWVudGFzWzFdLDAsd3guTEVGVCwxMCkKCQlzZXJ2aWRvcl9zaXplciA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCgkJc2Vydmlkb3Jfc2l6ZXIuQWRkKHNlbGYuc2Vydmlkb3IsMCx3eC5MRUZULDcpCgkJc2Vydmlkb3Jfc2l6ZXIuQWRkKHNlbGYuc2Vydmlkb3JfaW5wdXQsMCx3eC5MRUZULDcpCgkJdXNlcl9zaXplciA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCgkJdXNlcl9zaXplci5BZGQoc2VsZi51c2VyLDAsd3guTEVGVCw3KQoJCXVzZXJfc2l6ZXIuQWRkKHNlbGYudXNlcl9pbnB1dCwwLHd4LkxFRlQsMTcpCgkJcGFzc3dvcmRfc2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5IT1JJWk9OVEFMKQoJCXBhc3N3b3JkX3NpemVyLkFkZChzZWxmLnBhc3N3b3JkLDAsd3guTEVGVCw3KQoJCXBhc3N3b3JkX3NpemVyLkFkZChzZWxmLnBhc3N3b3JkX2lucHV0LDAsd3guTEVGVCw3KQoJCWNvb2tpZV9zaXplciA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCgkJY29va2llX3NpemVyLkFkZChzZWxmLmNvb2tpZSwwLHd4LkxFRlQsNykKCQljb29raWVfc2l6ZXIuQWRkKHNlbGYuY29va2llX2lucHV0LDAsd3guTEVGVCwyMSkKCQl2c2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKCQl2c2l6ZXIuQWRkKGJ1dHRvbl9zaXplciwwLHd4LlRPUCw3KQoJCXZzaXplci5BZGQoc2Vydmlkb3Jfc2l6ZXIsMSx3eC5UT1AsNykKCQl2c2l6ZXIuQWRkKHVzZXJfc2l6ZXIsMSx3eC5UT1AsMCkKCQl2c2l6ZXIuQWRkKHBhc3N3b3JkX3NpemVyLDEsd3guVE9QLDApCgkJdnNpemVyLkFkZChjb29raWVfc2l6ZXIsMSx3eC5UT1AsMCkKCQlzZWxmLlNldFNpemVyKHZzaXplcikKCQkjRXZlbnRvcwoJCXNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLHNlbGYuQWN0aXZhcixzZWxmLmxpc3RhX2hlcnJhbWllbnRhc1swXSkKCQlzZWxmLkJpbmQod3guRVZUX0JVVFRPTixzZWxmLkRlc2FjdGl2YXIsc2VsZi5saXN0YV9oZXJyYW1pZW50YXNbMV0pCgkJd3guRVZUX1RJTUVSKHNlbGYsVElNRVJfSUQsc2VsZi5BY3R1YWxpemFyU3RhdHVzKQoJCXNlbGYudGltZXIgPSB3eC5UaW1lcihzZWxmLFRJTUVSX0lEKQoJCWYgPSBvcGVuKCdjb29raWUudHh0JywgJ3IrJykKICAgICAgICAgICAgICAgIGNvb2tpZV9maWNoZXJvID0gZi5yZWFkbGluZSgpLnJlcGxhY2UoJ1xuJywnJykKICAgICAgICAgICAgICAgIHNlbGYuY29va2llX2lucHV0LlNldFZhbHVlKGNvb2tpZV9maWNoZXJvKQogICAgICAgICAgICAgICAgZi5jbG9zZSgpCgoJZGVmIF9CYXJyYUhlcnJhbWllbnRhcyhzZWxmKToKCQlzZWxmLmxpc3RhX2hlcnJhbWllbnRhcyA9IFtdCgkJYm1wID0gd3guQml0bWFwKCcuL2FjdGl2YXIucG5nJyx3eC5CSVRNQVBfVFlQRV9QTkcpCgkJYm90b24gPSBnYnRuLkdyYWRpZW50QnV0dG9uKHNlbGYsbGFiZWw9J0FjdGl2YXInLGJpdG1hcD1ibXApCgkJYm90b24uU2V0VG9vbFRpcFN0cmluZygnQWN0aXZhcicpCgkJc2VsZi5saXN0YV9oZXJyYW1pZW50YXMuYXBwZW5kKGJvdG9uKQoJCWJtcCA9IHd4LkJpdG1hcCgnLi9kZXNhY3RpdmFyLnBuZycsd3guQklUTUFQX1RZUEVfUE5HKQoJCWJvdG9uID0gZ2J0bi5HcmFkaWVudEJ1dHRvbihzZWxmLGxhYmVsPSdEZXNhY3RpdmFyJyxiaXRtYXA9Ym1wKQoJCWJvdG9uLlNldFRvb2xUaXBTdHJpbmcoJ0Rlc2FjdGl2YXInKQoJCXNlbGYubGlzdGFfaGVycmFtaWVudGFzLmFwcGVuZChib3RvbikKCglkZWYgQWN0dWFsaXphclN0YXR1cyhzZWxmLGV2ZW50KToKCQlwYWRyZSA9IHNlbGYuR2V0UGFyZW50KCkKCQlpZiBzZWxmLmxjLmV4aXRvID09IFRydWU6CgkJCXNlbGYudGltZXIuU3RvcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpZG9yID0gJycKICAgICAgICAgICAgICAgICAgICAgICAgZWxlY2Npb24gPSBzZWxmLnNlcnZpZG9yX2lucHV0LkdldEN1cnJlbnRTZWxlY3Rpb24oKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBlbGVjY2lvbiA9PSAwOiBzZXJ2aWRvciA9ICdodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uby5lcy90ZWFtX25ld3MucGh0bWwnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZWxlY2Npb24gPT0gMTogc2Vydmlkb3IgPSAnaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uZXMvdGVhbV9uZXdzLnBodG1sJwoJCQlwYWRyZS5QdXNoU3RhdHVzVGV4dCgnTG9ndWVhZG9zIGRlc3B1ZXMgZGUgJytzdHIoc2VsZi5sYy5pbnRlbnRvKSsnIGludGVudG9zLiBDb29raWUgZGlzcG9uaWJsZScpCiAgICAgICAgICAgICAgICAgICAgICAgIHdlYmJyb3dzZXIub3BlbihzZXJ2aWRvcikKCQllbHNlOgoJCQlwYWRyZS5QdXNoU3RhdHVzVGV4dChzdHIoc2VsZi5sYy5pbnRlbnRvKSsnIGludGVudG9zIGZhbGxpZG9zJykKCglkZWYgQWN0aXZhcihzZWxmLGV2ZW50KToKICAgICAgICAgICAgICAgIGNvb2tpZV9lbnRyYWRhID0gc3RyKHNlbGYuY29va2llX2lucHV0LkdldFZhbHVlKCkpCiAgICAgICAgICAgICAgICBmX3JlYWQgPSBvcGVuKCdjb29raWUudHh0JywncisnKQogICAgICAgICAgICAgICAgY29va2llX2ZpY2hlcm8gPSBmX3JlYWQucmVhZGxpbmUoKS5yZXBsYWNlKCdcbicsJycpCiAgICAgICAgICAgICAgICBmX3JlYWQuY2xvc2UoKQogICAgICAgICAgICAgICAgZl93cml0ZSA9IG9wZW4oJ2Nvb2tpZS50eHQnLCdyKycpCiAgICAgICAgICAgICAgICBpZiBjb29raWVfZW50cmFkYSAhPSAnJzoKICAgICAgICAgICAgICAgICAgICAgICAgZl93cml0ZS53cml0ZShjb29raWVfZW50cmFkYSkKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29raWUgPSBjb29raWVfZW50cmFkYQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29raWUgPSBjb29raWVfZmljaGVybwogICAgICAgICAgICAgICAgZl93cml0ZS5jbG9zZSgpCgkJdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuQWN0aXZhclRocmVhZCkKCQl0LnN0YXJ0KCkKICAgICAgICAgICAgICAgIHNlbGYudGltZXIuU3RhcnQoMzAwKQoKCWRlZiBBY3RpdmFyVGhyZWFkKHNlbGYpOgoJCXNlcnZpZG9yID0gJycKCQllbGVjY2lvbiA9IHNlbGYuc2Vydmlkb3JfaW5wdXQuR2V0Q3VycmVudFNlbGVjdGlvbigpCgkJaWYgZWxlY2Npb24gPT0gMDogc2Vydmlkb3IgPSAnd3d3LmNvbXVuaW8uZXMnCgkJZWxpZiBlbGVjY2lvbiA9PSAxOiBzZXJ2aWRvciA9ICd3d3cxNC5jb211bmlvLmVzJwoJCXNlbGYubGMgPSBMb2dpbkNvbXVuaW8oc3RyKHNlbGYudXNlcl9pbnB1dC5HZXRWYWx1ZSgpKSxzdHIoc2VsZi5wYXNzd29yZF9pbnB1dC5HZXRWYWx1ZSgpKSwxMCxzZXJ2aWRvcixzZWxmLmNvb2tpZSkKCQlzZWxmLmxjLkFjdGl2YXIoKQoJCQoJZGVmIERlc2FjdGl2YXIoc2VsZixldmVudCk6CgkJc2VsZi5sYy5EZXNhY3RpdmFyKCkKCQlzZWxmLnRpbWVyLlN0b3AoKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKCWFwcCA9IE15QXBwKEZhbHNlKQoJYXBwLk1haW5Mb29wKCk=
compilation info
Main.java:1: error: illegal character: \35
# -*- coding: utf-8 -*-
^
Main.java:1: error: class, interface, or enum expected
# -*- coding: utf-8 -*-
^
Main.java:2: error: '.' expected
import wx
^
Main.java:3: error: ';' expected
import wx.lib.agw.gradientbutton as gbtn
^
Main.java:3: error: class, interface, or enum expected
import wx.lib.agw.gradientbutton as gbtn
^
Main.java:3: error: class, interface, or enum expected
import wx.lib.agw.gradientbutton as gbtn
^
Main.java:4: error: '.' expected
import urllib2, urllib
^
Main.java:4: error: ';' expected
import urllib2, urllib
^
Main.java:5: error: class, interface, or enum expected
from urllib2 import HTTPError, URLError
^
Main.java:5: error: '.' expected
from urllib2 import HTTPError, URLError
^
Main.java:5: error: ';' expected
from urllib2 import HTTPError, URLError
^
Main.java:6: error: '.' expected
import threading
^
Main.java:7: error: ';' expected
import time
^
Main.java:8: error: '.' expected
import cookielib
^
Main.java:9: error: ';' expected
import sys
^
Main.java:10: error: '.' expected
import webbrowser
^
Main.java:12: error: ';' expected
class LoginComunio:
^
Main.java:12: error: class, interface, or enum expected
class LoginComunio:
^
Main.java:13: error: class, interface, or enum expected
def __init__(self,user,password,threads,url_base,cookie):
^
Main.java:14: error: illegal character: \35
#Inicializamos variables
^
Main.java:20: error: unclosed character literal
self.ua = 'Yo no pago muahahahahah'
^
Main.java:20: error: illegal line end in character literal
self.ua = 'Yo no pago muahahahahah'
^
Main.java:25: error: illegal character: \35
#Instalamos manejador de cookies
^
Main.java:27: error: unclosed character literal
ck = cookielib.Cookie(version=0, name='PHPSESSID',value=cookie,port=None,port_specified=False,domain=url_base,domain_specified=False, domain_initial_dot=False,path='/',path_specified=True,secure=False,expires=None,discard=True,comment=None,comment_url=None,rest={'HttpOnly':None},rfc2109=False)
^
Main.java:27: error: unclosed character literal
ck = cookielib.Cookie(version=0, name='PHPSESSID',value=cookie,port=None,port_specified=False,domain=url_base,domain_specified=False, domain_initial_dot=False,path='/',path_specified=True,secure=False,expires=None,discard=True,comment=None,comment_url=None,rest={'HttpOnly':None},rfc2109=False)
^
Main.java:27: error: unclosed character literal
ck = cookielib.Cookie(version=0, name='PHPSESSID',value=cookie,port=None,port_specified=False,domain=url_base,domain_specified=False, domain_initial_dot=False,path='/',path_specified=True,secure=False,expires=None,discard=True,comment=None,comment_url=None,rest={'HttpOnly':None},rfc2109=False)
^
Main.java:27: error: unclosed character literal
ck = cookielib.Cookie(version=0, name='PHPSESSID',value=cookie,port=None,port_specified=False,domain=url_base,domain_specified=False, domain_initial_dot=False,path='/',path_specified=True,secure=False,expires=None,discard=True,comment=None,comment_url=None,rest={'HttpOnly':None},rfc2109=False)
^
Main.java:51: error: unclosed character literal
url_login = 'http://'+self.url_base+'/login.phtml'
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:52: error: unclosed character literal
postdata = urllib.urlencode({'login':self.user,'pass':self.password,'action':'login','>>Login_x':'33'})
^
Main.java:55: error: unclosed character literal
request = urllib2.Request(url_login,headers={'User-Agent':self.ua})
^
Main.java:55: error: unclosed character literal
request = urllib2.Request(url_login,headers={'User-Agent':self.ua})
^
Main.java:73: error: '{' expected
class MyApp(wx.App):
^
Main.java:80: error: '{' expected
class MainFrame(wx.Frame):
^
Main.java:83: error: illegal character: \35
#Atributos
^
Main.java:86: error: illegal character: \35
#Layout
^
Main.java:92: error: '{' expected
class MainPanel(wx.Panel):
^
Main.java:96: error: illegal character: \35
#Atributos
^
Main.java:98: error: unclosed character literal
self.servidor = wx.StaticText(self,label='Servidor')
^
Main.java:98: error: unclosed character literal
self.servidor = wx.StaticText(self,label='Servidor')
^
Main.java:99: error: unclosed character literal
self.servidor_input = wx.Choice(self,choices=['www.comunio.es','www14.comunio.es'])
^
Main.java:99: error: unclosed character literal
self.servidor_input = wx.Choice(self,choices=['www.comunio.es','www14.comunio.es'])
^
Main.java:101: error: unclosed character literal
self.user = wx.StaticText(self,label='Usuario')
^
Main.java:101: error: unclosed character literal
self.user = wx.StaticText(self,label='Usuario')
^
Main.java:103: error: unclosed character literal
self.password = wx.StaticText(self,label='Password')
^
Main.java:103: error: unclosed character literal
self.password = wx.StaticText(self,label='Password')
^
Main.java:105: error: unclosed character literal
self.cookie = wx.StaticText(self,label='Cookie')
^
Main.java:105: error: unclosed character literal
self.cookie = wx.StaticText(self,label='Cookie')
^
Main.java:107: error: illegal character: \35
#Layout
^
Main.java:130: error: illegal character: \35
#Eventos
^
Main.java:135: error: unclosed character literal
f = open('cookie.txt', 'r+')
^
Main.java:135: error: unclosed character literal
f = open('cookie.txt', 'r+')
^
Main.java:135: error: unclosed character literal
f = open('cookie.txt', 'r+')
^
Main.java:135: error: unclosed character literal
f = open('cookie.txt', 'r+')
^
Main.java:136: error: empty character literal
cookie_fichero = f.readline().replace('\n','')
^
Main.java:136: error: unclosed character literal
cookie_fichero = f.readline().replace('\n','')
^
Main.java:142: error: unclosed character literal
bmp = wx.Bitmap('./activar.png',wx.BITMAP_TYPE_PNG)
^
Main.java:142: error: unclosed character literal
bmp = wx.Bitmap('./activar.png',wx.BITMAP_TYPE_PNG)
^
Main.java:143: error: unclosed character literal
boton = gbtn.GradientButton(self,label='Activar',bitmap=bmp)
^
Main.java:143: error: unclosed character literal
boton = gbtn.GradientButton(self,label='Activar',bitmap=bmp)
^
Main.java:144: error: unclosed character literal
boton.SetToolTipString('Activar')
^
Main.java:144: error: unclosed character literal
boton.SetToolTipString('Activar')
^
Main.java:146: error: unclosed character literal
bmp = wx.Bitmap('./desactivar.png',wx.BITMAP_TYPE_PNG)
^
Main.java:146: error: unclosed character literal
bmp = wx.Bitmap('./desactivar.png',wx.BITMAP_TYPE_PNG)
^
Main.java:147: error: unclosed character literal
boton = gbtn.GradientButton(self,label='Desactivar',bitmap=bmp)
^
Main.java:147: error: unclosed character literal
boton = gbtn.GradientButton(self,label='Desactivar',bitmap=bmp)
^
Main.java:148: error: unclosed character literal
boton.SetToolTipString('Desactivar')
^
Main.java:148: error: unclosed character literal
boton.SetToolTipString('Desactivar')
^
Main.java:155: error: empty character literal
servidor = ''
^
Main.java:155: error: illegal line end in character literal
servidor = ''
^
Main.java:157: error: unclosed character literal
if eleccion == 0: servidor = 'http://www.comunio.es/team_news.phtml'
^
Main.java:158: error: unclosed character literal
elif eleccion == 1: servidor = 'http://www14.comunio.es/team_news.phtml'
^
Main.java:159: error: unclosed character literal
padre.PushStatusText('Logueados despues de '+str(self.lc.intento)+' intentos. Cookie disponible')
^
Main.java:159: error: unclosed character literal
padre.PushStatusText('Logueados despues de '+str(self.lc.intento)+' intentos. Cookie disponible')
^
Main.java:159: error: unclosed character literal
padre.PushStatusText('Logueados despues de '+str(self.lc.intento)+' intentos. Cookie disponible')
^
Main.java:159: error: unclosed character literal
padre.PushStatusText('Logueados despues de '+str(self.lc.intento)+' intentos. Cookie disponible')
^
Main.java:162: error: unclosed character literal
padre.PushStatusText(str(self.lc.intento)+' intentos fallidos')
^
Main.java:162: error: unclosed character literal
padre.PushStatusText(str(self.lc.intento)+' intentos fallidos')
^
Main.java:166: error: unclosed character literal
f_read = open('cookie.txt','r+')
^
Main.java:166: error: unclosed character literal
f_read = open('cookie.txt','r+')
^
Main.java:167: error: empty character literal
cookie_fichero = f_read.readline().replace('\n','')
^
Main.java:167: error: unclosed character literal
cookie_fichero = f_read.readline().replace('\n','')
^
Main.java:169: error: unclosed character literal
f_write = open('cookie.txt','r+')
^
Main.java:169: error: unclosed character literal
f_write = open('cookie.txt','r+')
^
Main.java:170: error: empty character literal
if cookie_entrada != '':
^
Main.java:170: error: unclosed character literal
if cookie_entrada != '':
^
Main.java:181: error: empty character literal
servidor = ''
^
Main.java:181: error: illegal line end in character literal
servidor = ''
^
Main.java:183: error: unclosed character literal
if eleccion == 0: servidor = 'www.comunio.es'
^
Main.java:183: error: illegal line end in character literal
if eleccion == 0: servidor = 'www.comunio.es'
^
Main.java:184: error: unclosed character literal
elif eleccion == 1: servidor = 'www14.comunio.es'
^
Main.java:184: error: illegal line end in character literal
elif eleccion == 1: servidor = 'www14.comunio.es'
^
Main.java:194: error: reached end of file while parsing
app.MainLoop()
^
97 errors
stdout