def _downloadSplitedFiles(self, splitedfileslist): print '%d files to download from IMAP server ' % len(splitedfileslist) downloadedSplitedFiles = [] while (len(downloadedSplitedFiles) < len(splitedfileslist)): imapdisk = imapDisk.imapDisk() currentIMAPId = 0 for fileinfo in splitedfileslist: (bigfileid, original_filename, original_filehash, original_filesize, original_filemtime, remote_filename, remote_filehash, remote_filesize, remote_folder, remote_rarpassword, remote_uploadtime, splitedfileid, splitedfilename, splitedfilehash, splitedfilesize, splitedfilemailsize, splitedfilesequenceid, imapid, imapuid, server, port, sslport, username, password, diskname, disklimit, diskused, vendor) = fileinfo # this file has been downloaded if not splitedfileid in downloadedSplitedFiles: if not currentIMAPId == imapid: imapdisk.close() currentIMAPId = imapid imapdisk.setIMAPConfig(server, port, sslport, username, password, vendor) if imapdisk.download(imapuid, splitedfilename, splitedfilehash): downloadedSplitedFiles.append(splitedfileid) self._ProcessedByteSize = self._ProcessedByteSize + splitedfilemailsize print 'Progress: %d/%d| Filename:%s' % ( len(downloadedSplitedFiles), len(splitedfileslist), splitedfilename) imapdisk.close() imapdisk = None return True
def _deleteSplitedFiles(self, splitedfileslist): print '%d emails on server to delete' % len(splitedfileslist) imapdisk = imapDisk.imapDisk() currentIMAPId = 0 spfIDs_deleted = [] while (len(spfIDs_deleted) < len(splitedfileslist)): for fileinfo in splitedfileslist: (bigfileid, original_filename, original_filehash, original_filesize, original_filemtime, remote_filename, remote_filehash, remote_filesize, remote_folder, remote_rarpassword, remote_uploadtime, splitedfileid, splitedfilename, splitedfilehash, splitedfilesize, splitedfilemailsize, splitedfilesequenceid, imapid, imapuid, server, port, sslport, username, password, diskname, disklimit, diskused, vendor) = fileinfo if splitedfileid in spfIDs_deleted: continue if not currentIMAPId == imapid: imapdisk.close() currentIMAPId = imapid imapdisk.setIMAPConfig(server, port, sslport, username, password, vendor) if imapdisk.delete(imapuid): print 'IMAP UID deleted : %d (%d/%d)' % ( imapuid, len(spfIDs_deleted) + 1, len(splitedfileslist)) spfIDs_deleted.append(imapuid) imapdisk.close() imapdisk = None
def _uploadBigFileById(self, bigfileid): print 'Uploading Big File Id: %d' % bigfileid splitedfileids = dba.getSplitedFilesIdToUpload(bigfileid) uploadedIDs = [] while len(uploadedIDs) < len(splitedfileids): countUploaded = 0 countToUpload = len(splitedfileids) - len(uploadedIDs) print "At least %d files need to upload" % countToUpload for splitedfileid in splitedfileids: if splitedfileid in uploadedIDs: continue # had been uploaded splitedfilename = dba.getSplitedFileNameById(splitedfileid) imapdisk = imapDisk.imapDisk() if not imapdisk.allocateIMAPServer(splitedfileid): print 'allocateIMAPServer failure' continue imapuid = 0 try: print "(%3d/%-3d) uploading splited file : %d | %s" % (countUploaded + 1, countToUpload, splitedfileid, splitedfilename) imapuid = imapdisk.uploadFile(splitedfilename) except Exception, e: print e if not 0 == imapuid: dba.updateSplitedFileIMAPInfo(splitedfileid, imapdisk.imap_id, imapuid, imapdisk.imap_mailsize) # update upload status dba.updateIMAPServerInfo(imapdisk.imap_id, imapdisk.imap_mailsize) # update disk usage uploadedIDs.append(splitedfileid) countUploaded = countUploaded + 1 self._ProcessedByteSize = self._ProcessedByteSize + imapdisk.imap_mailsize imapdisk.close() imapdisk = None splitedfileids = dba.getSplitedFilesIdToUpload(bigfileid)
def _configIMAPServer(self): print 'Welcome to use IMAP2Disk :)\nThank you for adding the IMAP configure!\nFor your account security, the IMAP Server must support SSL' while True: imap_vendor = raw_input('\nVendor(eg. 163,QQ,Microsoft):') if not len(imap_vendor) > 0: print 'invalid Vendor string..' continue imap_server = raw_input('Server(eg. imap.163.com) :') if not len(imap_server) > 3: print 'invalid Server string..' continue #imap_port = raw_input('Port(eg. Enter with default 143):') imap_port = 143 imap_sslport = raw_input('SSL Port(eg. default 993) :') if imap_sslport == '': imap_sslport = '993' imap_username = raw_input('UserName(eg. [email protected]) :') if not len(imap_username) > 0: print 'invalid UserName string..' continue imap_password = getpass.getpass('Password :'******'invalid Password string..' continue imap_disklimit = raw_input('DiskLimit(GB,eg. 20) :') if imap_disklimit == '' or not int(imap_disklimit) > 0: print 'invalid DiskLimit value..' continue print '\n\n%s|%s|%s|%s|******|%sGB' % (imap_vendor, imap_server, imap_sslport, imap_username, imap_disklimit) confirm = raw_input('\nAre you sure(y/n):') if not confirm.upper() == 'Y': continue imapdisk = imapDisk.imapDisk() imapdisk.setIMAPConfig(imap_server, int(imap_port), int(imap_sslport), imap_username, imap_password, imap_vendor) print 'Verifing your IMAP parameters...' if imapdisk.checkAccout() and imapdisk.checkNetDiskFolder(): print 'OK :)\n' if dba.addIMAPConfig(imap_server, int(imap_port), int(imap_sslport), imap_username, imap_password, int(imap_disklimit), imap_vendor): self._imapReady = True print 'Config saved successfully, continue your task..' else: print 'Config saved failed...\n' print '-----------------------------------------\n' break else: print 'For some reason, your configure can not work correctly :(\n'
def _configIMAPServer(self) : print 'Welcome to use IMAP2Disk :)\nThank you for adding the IMAP configure!\nFor your account security, the IMAP Server must support SSL' while True: imap_vendor = raw_input('\nVendor(eg. 163,QQ,Microsoft):') if not len(imap_vendor) > 0: print 'invalid Vendor string..' continue imap_server = raw_input('Server(eg. imap.163.com) :') if not len(imap_server) > 3: print 'invalid Server string..' continue #imap_port = raw_input('Port(eg. Enter with default 143):') imap_port = 143 imap_sslport = raw_input('SSL Port(eg. default 993) :') if imap_sslport == '': imap_sslport = '993' imap_username = raw_input('UserName(eg. [email protected]) :') if not len(imap_username) > 0: print 'invalid UserName string..' continue imap_password = getpass.getpass('Password :'******'invalid Password string..' continue imap_disklimit = raw_input('DiskLimit(GB,eg. 20) :') if imap_disklimit == '' or not int(imap_disklimit) > 0: print 'invalid DiskLimit value..' continue print '\n\n%s|%s|%s|%s|******|%sGB' % (imap_vendor, imap_server, imap_sslport, imap_username,imap_disklimit) confirm = raw_input('\nAre you sure(y/n):') if not confirm.upper() == 'Y': continue imapdisk = imapDisk.imapDisk() imapdisk.setIMAPConfig(imap_server, int(imap_port), int(imap_sslport),imap_username, imap_password, imap_vendor) print 'Verifing your IMAP parameters...' if imapdisk.checkAccout() and imapdisk.checkNetDiskFolder(): print 'OK :)\n' if dba.addIMAPConfig(imap_server, int(imap_port), int(imap_sslport),imap_username, imap_password, int(imap_disklimit), imap_vendor): self._imapReady = True print 'Config saved successfully, continue your task..' else: print 'Config saved failed...\n' print '-----------------------------------------\n' break else: print 'For some reason, your configure can not work correctly :(\n'
def _deleteSplitedFiles(self, splitedfileslist): print '%d emails on server to delete' % len(splitedfileslist) imapdisk = imapDisk.imapDisk() currentIMAPId = 0 spfIDs_deleted = [] while(len(spfIDs_deleted) < len(splitedfileslist)): for fileinfo in splitedfileslist: (bigfileid,original_filename,original_filehash,original_filesize,original_filemtime,remote_filename,remote_filehash,remote_filesize,remote_folder,remote_rarpassword,remote_uploadtime, splitedfileid,splitedfilename,splitedfilehash,splitedfilesize,splitedfilemailsize,splitedfilesequenceid,imapid, imapuid,server,port,sslport,username,password,diskname,disklimit,diskused,vendor) = fileinfo if splitedfileid in spfIDs_deleted: continue if not currentIMAPId == imapid: imapdisk.close() currentIMAPId = imapid imapdisk.setIMAPConfig(server, port, sslport,username, password, vendor) if imapdisk.delete(imapuid): print 'IMAP UID deleted : %d (%d/%d)' % (imapuid, len(spfIDs_deleted) + 1, len(splitedfileslist)) spfIDs_deleted.append(imapuid) imapdisk.close() imapdisk = None
def _downloadSplitedFiles(self, splitedfileslist): print '%d files to download from IMAP server ' % len(splitedfileslist) downloadedSplitedFiles = [] while(len(downloadedSplitedFiles) < len(splitedfileslist)): imapdisk = imapDisk.imapDisk() currentIMAPId = 0 for fileinfo in splitedfileslist: (bigfileid,original_filename,original_filehash,original_filesize,original_filemtime,remote_filename,remote_filehash,remote_filesize,remote_folder,remote_rarpassword,remote_uploadtime, splitedfileid,splitedfilename,splitedfilehash,splitedfilesize,splitedfilemailsize,splitedfilesequenceid,imapid, imapuid,server,port,sslport,username,password,diskname,disklimit,diskused,vendor) = fileinfo # this file has been downloaded if not splitedfileid in downloadedSplitedFiles: if not currentIMAPId == imapid: imapdisk.close() currentIMAPId = imapid imapdisk.setIMAPConfig(server, port, sslport,username, password, vendor) if imapdisk.download(imapuid, splitedfilename, splitedfilehash): downloadedSplitedFiles.append(splitedfileid) self._ProcessedByteSize = self._ProcessedByteSize + splitedfilemailsize print 'Progress: %d/%d| Filename:%s' % (len(downloadedSplitedFiles), len(splitedfileslist), splitedfilename) imapdisk.close() imapdisk = None return True
def _uploadBigFileById(self, bigfileid): print 'Uploading Big File Id: %d' % bigfileid splitedfileids = dba.getSplitedFilesIdToUpload(bigfileid) uploadedIDs = [] while len(uploadedIDs) < len(splitedfileids): countUploaded = 0 countToUpload = len(splitedfileids) - len(uploadedIDs) print "At least %d files need to upload" % countToUpload for splitedfileid in splitedfileids: if splitedfileid in uploadedIDs: continue # had been uploaded splitedfilename = dba.getSplitedFileNameById(splitedfileid) imapdisk = imapDisk.imapDisk() if not imapdisk.allocateIMAPServer(splitedfileid): print 'allocateIMAPServer failure' continue imapuid = 0 try: print "(%3d/%-3d) uploading splited file : %d | %s" % ( countUploaded + 1, countToUpload, splitedfileid, splitedfilename) imapuid = imapdisk.uploadFile(splitedfilename) except Exception, e: print e if not 0 == imapuid: dba.updateSplitedFileIMAPInfo( splitedfileid, imapdisk.imap_id, imapuid, imapdisk.imap_mailsize) # update upload status dba.updateIMAPServerInfo( imapdisk.imap_id, imapdisk.imap_mailsize) # update disk usage uploadedIDs.append(splitedfileid) countUploaded = countUploaded + 1 self._ProcessedByteSize = self._ProcessedByteSize + imapdisk.imap_mailsize imapdisk.close() imapdisk = None splitedfileids = dba.getSplitedFilesIdToUpload(bigfileid)