コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
ファイル: mail2disk.py プロジェクト: shadu120/mailbox2netdisk
 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)
コード例 #4
0
 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'
コード例 #5
0
ファイル: mail2disk.py プロジェクト: shadu120/mailbox2netdisk
 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'
コード例 #6
0
ファイル: mail2disk.py プロジェクト: shadu120/mailbox2netdisk
 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
コード例 #7
0
ファイル: mail2disk.py プロジェクト: shadu120/mailbox2netdisk
 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
コード例 #8
0
    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)