Exemple #1
0
 def run(self):
     global rfclist
     data = self.client_sock.recv(250)  # Download request
     print 'Download request received'
     res, rfc = P2P.validateGetRequest(data, rfclist)
     
     #res,rfc = 200 , 200
     if(res == 200):
         if (data):
             segSize = 1024;
             if(ostype=="Windows"):
                 filepath = srcdir+"\\rfc"+rfc+".pdf"
             else:
                 filepath = srcdir+"/rfc"+rfc+".pdf"
             f = open(filepath, "rb")
             pktheader = P2P.getResponseHeader(200, filepath)
             self.client_sock.send(pktheader)
             data = f.read(segSize)
             while (data):
                 self.client_sock.sendall(data)
                 data = f.read(segSize)
             f.close()
             self.client_sock.close()
             print 'upload complete'
     else:
         pktheader = P2P.getResponseHeader(res, 'null')
         self.client_sock.send(pktheader)
         print 'Upload Failed: '+Status.getResponsePhrase(res)
     
     self.client_sock.close()
     return
Exemple #2
0
 def downloadRFC(self, rfcNum, hostname, port):
     global srcdir, dstdir
     # Get details from server using P2S Lookup request
     request = P2P.getRequestHeader(rfcNum, hostname)
     peer_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     #peer_sock.connect((socket.gethostname(), port))
     peer_sock.connect((hostname, port))
     peer_sock.send(request)
     
     l = peer_sock.recv(200)
     #parse response
     res = P2P.validateGetReponse(l)
     if(res==200):
         if (ostype=="Windows"):
             fpath = dstdir+"\\rfc"+rfcNum+".pdf"
         else:
             fpath = dstdir+"/rfc"+rfcNum+".pdf"
         print 'fpath '+ fpath
         f = open(fpath, "wb")
         print l    
         data = peer_sock.recv(1024)
         while (data):
             f.write(data)
             data = peer_sock.recv(1024)
             if(sys.getsizeof(data) == 0):
                 break;
     else:
         print 'Download failed: '+Status.getResponsePhrase(res)
     f.close()        
     peer_sock.close()
Exemple #3
0
 def run(self):
     #sending all rfc files details to centralized index
     global rfclist
     global srcdir, dstdir
     #for key,value in rfclist.iteritems():
     #   self.sendADDRequest(key, "RFC"+key)
     
     while True:
         print "Please select from the following option"
         print "1.ADD RFC to  CI server"
         print "2.LOOKUP request to CI Server "
         print "3.List all request to CI server"
         print "4.Download rfc"
         print "5.Exit"
         user_choice= raw_input()
         if user_choice =='1':
             rfc_num=raw_input("Enter RFC Number to Add")
             rfc_title=raw_input("Enter RFC Title to Add")
             print "Sending Add RFC to  CI server"
             res = self.checkRFCAvailability(rfc_num)
             if res==1:
                 if(ostype=="Windows"):
                     rfclist[rfc_num]= srcdir+'\\rfc'+str(rfc_num)+'.pdf' 
                 else:
                     rfclist[rfc_num]= srcdir+'/rfc'+str(rfc_num)+'.pdf'
                 self.sendADDRequest(rfc_num,rfc_title)
             else:
                 print 'File Not available'
                 print 'Save the file in the format -> rfc'+str(rfc_num)+'.pdf <- in P2PFilesrc Folder\n'   
         elif user_choice=='2':
             rfc_num=raw_input("Enter RFC Number to lookup")
             rfc_title=raw_input("Enter RFC Title to lookup")
             print "Sending lookup request"
             self.sendLookUpRequest(rfc_num,rfc_title)
         elif user_choice=='3':
             print "Sending list all request"
             self.sendListAllRequest()
         elif user_choice=='4':
             print 'Downloading RFC'
             rfc_num=raw_input("Enter RFC Number to download")
             rfc_title=raw_input("Enter RFC Title to download")
             resp = self.sendLookUpRequest(rfc_num,rfc_title)
             host,port,stat = P2S.parseLookupResponse(resp,rfc_num,rfc_title)
             print 'stat' + str(stat)
             if(stat==200):
                 self.downloadRFC(rfc_num, host, int(port))
             else:
                 print "Download Failed: "+Status.getResponsePhrase(stat)
         elif user_choice=='5':
             print "Exiting program"
             print("socket closed")
             self.ser_sock.close()
             os._exit(1)
             break
         else:
             print "Invalid input"
         
     return
Exemple #4
0
def response(status, li):
    pktheader = "P2P-CI/1.0 "+str(status)+" "+Status.getResponsePhrase(status)+"\r\n\r\n" 
    pktdata  = ""
    if li=='null':
        pktdata+="\r\n"
        return pktheader+pktdata
    
    for rfcn,title,hostname,port in li:
        dataline = "RFC "+rfcn+" "+title+" "+hostname +" "+str(port)+"\r\n";
        pktdata+=dataline
    pktdata+="\r\n"
    return pktheader+pktdata
Exemple #5
0
def getResponseHeader(status,fi):
    opsys = platform.system()+" "+platform.release()+" "+platform.version()
    #path = 'C:\\SARAVANANB\\NCSU MAIN\\NCSU-Sem1\\CSC505\\Programs\\P2P\\P2PFilesrc\\1234.txt'
    
    pktheader = "P2P-CI/1.0 "+str(status)+" "+Status.getResponsePhrase(status)+ "\r\n" \
                "Date: "+str(datetime.datetime.now().time()) + "\r\n" \
                "OS: "+opsys+"\r\n" 
    if(fi!='null'):
        contlen = os.path.getsize(fi)
        pktheader+="Last-Modified: "+str(time.ctime(os.path.getmtime(fi))) + "\r\n" +\
        "Content-Length: " + str(contlen) + "\r\n" + \
        "Content-Type: text/text\r\n"
        
    pktheader+="\r\n"
    
    return pktheader