Example #1
0
 def __init__(self, view_=None, model_=None, debug=False):
     if view_ == None:
         self.view = view.View()
     else:
         self.view = view_
     if model_ == None:
         self.model = model.Model()
     else:
         self.model = model_
     self.soap = SOAP()
     ########
     #root folder
     self.folders_dom = {}
     self.ses_id = ''
     self.chomik_id = '0'
     self.folder_id = '0'
     self.cur_fold = []
     self.user = ''
     self.password = ''
     self.last_login = 0
     self.debug = debug
Example #2
0
 def __init__(self, view_=None, model_=None, debug=False):
     #reload(sys)
     #sys.setdefaultencoding('utf8')
     if view_ == None:
         self.view = view.View()
     else:
         self.view = view_
     if model_ == None:
         self.model = model.Model()
     else:
         self.model = model_
     self.soap = SOAP()
     ########
     #root folder
     self.folders_dom = {}
     self.ses_id = ''
     self.chomik_id = '0'
     self.folder_id = '0'
     self.cur_fold = []
     self.user = ''
     self.password = ''
     self.last_login = 0
     self.debug = debug
     self.cookie = ''
Example #3
0
 def __init__(self, view_ = None, model_ = None):
     if view_ == None:
         self.view    = view.View()
     else:
         self.view    = view_
     if model_ == None:
         self.model   = model.Model()
     else:
         self.model   = model_
     self.soap          = SOAP()
     ########
     #root folder
     self.folders_dom   = {}
     self.ses_id        = ''
     self.chomik_id     = '0'
     self.folder_id     = '0'
     self.cur_fold      = []
     self.user          = ''
     self.password      = ''
     self.last_login    = 0
Example #4
0
 def __init__(self, view_ = None, model_ = None, debug = False):
 	#reload(sys)
 	#sys.setdefaultencoding('utf8')
     if view_ == None:
         self.view    = view.View()
     else:
         self.view    = view_
     if model_ == None:
         self.model   = model.Model()
     else:
         self.model   = model_
     self.soap          = SOAP()
     ########
     #root folder
     self.folders_dom   = {}
     self.ses_id        = ''
     self.chomik_id     = '0'
     self.folder_id     = '0'
     self.cur_fold      = []
     self.user          = ''
     self.password      = ''
     self.last_login    = 0
     self.debug         = debug
     self.cookie        = ''
Example #5
0
class Chomik(object):
    def __init__(self, view_ = None, model_ = None, debug = False):
        if view_ == None:
            self.view    = view.View()
        else:
            self.view    = view_
        if model_ == None:
            self.model   = model.Model()
        else:
            self.model   = model_
        self.debug         = debug
        self.soap          = SOAP()
        ########
        #root folder
        self.folders_dom   = {}
        self.ses_id        = ''
        self.chomik_id     = '0'
        self.folder_id     = '0'
        self.cur_fold      = []
        self.user          = ''
        self.password      = ''
        self.last_login    = 0
        self.cookie        = ''
        self.chomikbox_url = ''
        self.opener        = None


    def send(self, content, l_ip = "box.chomikuj.pl", l_port = 80):
        if l_ip != None:
            login_ip = l_ip
        if l_port != None:
            login_port = l_port
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(glob_timeout)
        sock.connect( (login_ip, login_port) )
        sock.send(content)
        resp = ""
        kRespSize = 2056
        while True:
            tmp = sock.recv(kRespSize)
            resp   += tmp
            if tmp ==  '' or tmp.endswith("\r\n\r\n"):
                break
        sock.close()
        if "Set-Cookie: __cfduid=" in resp:
            self.cookie = re.findall("Set-Cookie: __cfduid=([^;]*)", resp)[0]
        resp = resp.partition("\r\n\r\n")[2]
        resp = re.sub("\r\n\w{1,10}\r\n", "", resp)
        _, _, resp = resp.partition("<")
        resp = "<" + resp
        resp,_,_ = resp.rpartition(">")
        resp = resp + ">"
        return resp
                
        
    def login(self, user, password):
        """
        Logowanie sie do chomika
        Zwraca True przy pomyslnym zalogowani, a False wpp
        """
        self.user          = user
        self.password      = password
        if self.relogin() == True:
            self.get_dir_list()
            return True
        else:
            return False

    def relogin(self):
        if self.last_login + 360 > time.time():
            return True
        self.last_login = time.time()
        password = hashlib.md5(self.password).hexdigest()
        xml_dict = [('ROOT',[('name' , self.user), ('passHash', password), ('ver' , '4'), ('client',[('name','chomikbox'),('version',version) ]) ])]
        xml_content = self.soap.soap_dict_to_xml(xml_dict, "Auth").strip()
        xml_len = len(xml_content)
        header  = """POST /services/ChomikBoxService.svc HTTP/1.1\r\n"""
        header += """SOAPAction: http://chomikuj.pl/IChomikBoxService/Auth\r\n"""
        #header += """Content-Encoding: identity\r\n"""
        header += """Content-Type: text/xml;charset=utf-8\r\n"""
        header += """Content-Length: %d\r\n""" % xml_len
        header += """Connection: Keep-Alive\r\n"""
        header += """Accept-Encoding: identity\r\n"""
        header += """Accept-Language: pl-PL,en,*\r\n"""
        header += """User-Agent: Mozilla/5.0\r\n"""
        header += """Host: box.chomikuj.pl\r\n\r\n"""
        header += xml_content
        resp = self.send(header)
        resp_dict =  self.soap.soap_xml_to_dict(resp)
        status = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:status']
        if status != 'Ok':
            self.view.print_( "Blad(relogin):" )
            self.view.print_( status )
            return False
        try:
            chomik_id = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:hamsterId']
            ses_id    = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:token'] 
            self.ses_id    = ses_id
            self.chomik_id = chomik_id
            if self.ses_id == "-1" or self.chomik_id == "-1":
                return False
        except IndexError, e:
            self.view.print_( "Blad(relogin):" )
            self.view.print_( e )
            self.view.print_( resp )
            return False
        else:
Example #6
0
class Chomik(object):
    def __init__(self, view_ = None, model_ = None, debug = False):
    	#reload(sys)
    	#sys.setdefaultencoding('utf8')
        if view_ == None:
            self.view    = view.View()
        else:
            self.view    = view_
        if model_ == None:
            self.model   = model.Model()
        else:
            self.model   = model_
        self.soap          = SOAP()
        ########
        #root folder
        self.folders_dom   = {}
        self.ses_id        = ''
        self.chomik_id     = '0'
        self.folder_id     = '0'
        self.cur_fold      = []
        self.user          = ''
        self.password      = ''
        self.last_login    = 0
        self.debug         = debug
        self.cookie        = ''


    def send(self, content):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(glob_timeout)
        sock.connect( (login_ip, login_port) )
        sock.send(content)
        resp = ""
        kRespSize = 2056
        while True:
            tmp = sock.recv(kRespSize)
            resp   += tmp
            #if tmp ==  '' or tmp.endswith("\r\n\r\n"):
            if tmp.endswith("\r\n\r\n") and resp.count("\r\n\r\n") >= 2 or tmp == '':
                break
        sock.close()
        if "Set-Cookie: __cfduid=" in resp:
            self.cookie = re.findall("Set-Cookie: __cfduid=([^;]*)", resp)[0]
        resp = resp.partition("\r\n\r\n")[2]
        resp = re.sub("\r\n\w{1,10}\r\n", "", resp)
        _, _, resp = resp.partition("<")
        resp = "<" + resp
        resp,_,_ = resp.rpartition(">")
        resp = resp + ">"
        return resp
                
        
    def login(self, user, password):
        """
        Logowanie sie do chomika
        Zwraca True przy pomyslnym zalogowani, a False wpp
        """
        self.user          = user
        self.password      = password
        if self.relogin() == True:
            self.get_dir_list()
            return True
        else:
            return False


    
    def relogin(self):
        #we log in recently
        if self.last_login + 300 > time.time():
            return True
        self.last_login = time.time()
        password = hashlib.md5(self.password).hexdigest()
        xml_dict = [('ROOT',[('name' , self.user), ('passHash', password), ('ver' , '4'), ('client',[('name','chomikbox'),('version',version) ]) ])]
        xml_content = self.soap.soap_dict_to_xml(xml_dict, "Auth").strip()
        xml_len = len(xml_content)
        header  = """POST /services/ChomikBoxService.svc HTTP/1.1\r\n"""
        header += """SOAPAction: http://chomikuj.pl/IChomikBoxService/Auth\r\n"""
        #header += """Content-Encoding: identity\r\n"""
        header += """Content-Type: text/xml;charset=utf-8\r\n"""
        header += """Content-Length: %d\r\n""" % xml_len
        header += """Connection: Keep-Alive\r\n"""
        header += """Accept-Encoding: identity\r\n"""
        header += """Accept-Language: pl-PL,en,*\r\n"""
        header += """User-Agent: Mozilla/5.0\r\n"""
        header += """Host: box.chomikuj.pl\r\n\r\n"""
        header += xml_content
        resp = self.send(header)
        resp_dict =  self.soap.soap_xml_to_dict(resp)
        status = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:status']
        if status != 'Ok':
            self.view.print_( "Blad(relogin):" )
            self.view.print_( status )
            return False
        try:
            chomik_id = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:hamsterId']
            ses_id    = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:token'] 
            self.ses_id    = ses_id
            self.chomik_id = chomik_id
            if self.ses_id == "-1" or self.chomik_id == "-1":
                return False 
        except IndexError, e:
            self.view.print_( "Blad(relogin):" )
            self.view.print_( e )
            #self.view.print_( resp )
            return False
        else:
Example #7
0
class Chomik(object):
    def __init__(self, view_ = None, model_ = None):
        if view_ == None:
            self.view    = view.View()
        else:
            self.view    = view_
        if model_ == None:
            self.model   = model.Model()
        else:
            self.model   = model_
        self.soap          = SOAP()
        ########
        #root folder
        self.folders_dom   = {}
        self.ses_id        = ''
        self.chomik_id     = '0'
        self.folder_id     = '0'
        self.cur_fold      = []
        self.user          = ''
        self.password      = ''
        self.last_login    = 0


    def send(self, content):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(glob_timeout)
        sock.connect( (login_ip, login_port) )
        sock.send(content)
        resp = ""
        while True:
            tmp = sock.recv(640) 
            if tmp ==  '':
                break
            resp   += tmp
        sock.close()
        return resp.partition("\r\n\r\n")[2]
                
        
    def login(self, user, password):
        """
        Logowanie sie do chomika
        Zwraca True przy pomyslnym zalogowani, a False wpp
        """
        self.user          = user
        self.password      = password
        if self.relogin() == True:
            self.get_dir_list()
            return True
        else:
            return False


    
    def relogin(self):
        #we log in recently
        if self.last_login + 3600 > time.time():
            return True
        password = hashlib.md5(self.password).hexdigest()
        xml_dict = [('ROOT',[('name' , self.user), ('passHash', password), ('ver' , '4'), ('client',[('name','chomikbox'),('version','2.0.4.3') ]) ])]
        xml_content = self.soap.soap_dict_to_xml(xml_dict, "Auth").strip()
        xml_len = len(xml_content)
        header  = """POST /services/ChomikBoxService.svc HTTP/1.1\r\n"""
        header += """SOAPAction: http://chomikuj.pl/IChomikBoxService/Auth\r\n"""
        header += """Content-Type: text/xml;charset=utf-8\r\n"""
        header += """Content-Length: %d\r\n""" % xml_len
        header += """Connection: Keep-Alive\r\n"""
        header += """Accept-Language: pl-PL,en,*\r\n"""
        header += """User-Agent: Mozilla/5.0\r\n"""
        header += """Host: box.chomikuj.pl\r\n\r\n"""
        header += xml_content
        resp = self.send(header)
        resp_dict =  self.soap.soap_xml_to_dict(resp)
        status = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:status']
        if status != 'Ok':
            self.view.print_( "Blad(relogin):" )
            self.view.print_( status )
            return False
        try:
            chomik_id = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:hamsterId']
            ses_id    = resp_dict['s:Envelope']['s:Body']['AuthResponse']['AuthResult']['a:token'] 
            self.ses_id    = ses_id
            self.chomik_id = chomik_id
        except IndexError, e:
            self.view.print_( "Blad(relogin):" )
            self.view.print_( e )
            #self.view.print_( resp )
            return False
        else: