Advertisement
Guest User

HD2Web 0.9

a guest
Jul 26th, 2011
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.55 KB | None | 0 0
  1. import string,cgi,socket, sys
  2. from os import curdir, sep, listdir, path, makedirs
  3. from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
  4.  
  5. ricorda = []
  6.  
  7. class MyHandler(BaseHTTPRequestHandler):
  8.     def do_GET(self):
  9.         try:
  10.             global ricorda
  11.             if self.path != "/favicon.ico":
  12.               ricorda.append(self.path)
  13.             if path.isfile(self.path):
  14.               if self.path == "/hd2web/upload.html":
  15.                 self.wfile.write("<HTML><BODY><form method='POST' enctype='multipart/form-data' action=''>File da uploadare: <input type=file name=file><br><br>"+'Nome del file: <input type="text" name=nome><br><br><input type=submit value=Premi> per uploadare il file</form></body></html><br><br>'+"<a href="+ricorda[len(ricorda)-2]+">Indietro</a>")
  16.                 return
  17.               elif self.path == "/hd2web/about.html":
  18.                 self.wfile.write('<html><p align="center"><h1>HD2Web</h1></p>')
  19.                 self.wfile.write("<b>Descrizione:</b> rende accessibili tutti i tuoi file da remoto, connettendosi via browser<br>")
  20.                 self.wfile.write("<b>Autore:</b> I.Ren<br>")
  21.                 self.wfile.write("<b>Licenza:</b> <a href=http://www.gnu.org/copyleft/gpl.html>GNU GPL</a><br>")
  22.                 self.wfile.write("<b>Versione:</b> 0.9 ipv4<br>")
  23.                 self.wfile.write("<b>Visita:</b> <a href=http://autoit.forumcommunity.net>autoit.forumcommunity.net</a>")
  24.                 self.wfile.write("<br><br><a href="+ricorda[len(ricorda)-2]+">Indietro</a>")
  25.                 return
  26.               else:
  27.                 self.send_response(200)
  28.                 self.send_header('Content-Type', 'application/zip')
  29.                 self.send_header('Content-Disposition', 'attachment;'
  30.                                       'filename='+self.path[self.path.rfind("/")+1:len(self.path)])
  31.                 self.send_header("Content-Transfer-Encoding", "binary")
  32.                 self.end_headers()
  33.                 o = open(self.path)
  34.                 s = ""
  35.                 for line in o:
  36.                   s += line
  37.                 o.close()
  38.                 self.wfile.write(s)
  39.                 return
  40.             else:
  41.               lista = listdir(self.path)
  42.               self.send_response(200)
  43.               self.send_header('Content-type',  'text/html')
  44.               self.end_headers()
  45.               self.wfile.write("<b><a href=/hd2web/upload.html>Upload</a></b> <b><a href=/hd2web/about.html>About</a></b><br><br>")
  46.               if self.path != "/":
  47.                 self.wfile.write("<a href="+self.path[0:self.path.find(self.path.split("/")[len(self.path.split("/"))-2])]+">..</a><br>")
  48.               for i in sorted(lista):
  49.                 if i != "hd2web":
  50.                   if path.isfile(self.path+"/"+i) == False:
  51.                       self.wfile.write("DIR:&emsp; <a href="+self.path+i+"/>"+i+"</a><BR>")
  52.               for i in sorted(lista):
  53.                 if path.isfile(self.path+"/"+i):
  54.                   self.wfile.write("FILE:&emsp;<a href="+self.path+i+">"+i+"</a><BR>")
  55.             return
  56.                
  57.         except IOError:
  58.             self.send_error(404,'File Not Found: %s' % self.path)
  59.  
  60.     def do_POST(self):
  61.       global rootnode
  62.       ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
  63.       if ctype == 'multipart/form-data':
  64.         query = cgi.parse_multipart(self.rfile,pdict)
  65.       self.send_response(301)
  66.       self.end_headers()
  67.       nome = query.get("nome")
  68.       data = query.get("file")
  69.       dove = ricorda[len(ricorda)-2]
  70.       o = open(dove+nome[0],"w")
  71.       o.write(data[0])
  72.       o.close()
  73.       self.wfile.write("<html><b>Upload effettuato con successo.</b><br><br><a href="+ricorda[len(ricorda)-2]+">Indietro</a></html>")
  74.      
  75. def main():
  76.     if not path.exists("/hd2web/"):
  77.       makedirs("/hd2web")
  78.     if not path.exists("/hd2web/upload.html"):
  79.       open("/hd2web/upload.html","w").close()
  80.     if not path.exists("/hd2web/about.html"):
  81.       open("/hd2web/about.html","w").close()
  82.     try:
  83.         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  84.         s.connect(("google.com",80))
  85.         ip = s.getsockname()
  86.         if len(sys.argv) > 1:
  87.           porta = sys.argv[1]
  88.         else:
  89.           porta = 80
  90.         server = HTTPServer((ip[0], int(porta)), MyHandler)
  91.         print 'Server creato su: http://'+ip[0]+":"+str(porta)
  92.         server.serve_forever()
  93.     except KeyboardInterrupt:
  94.         print '^C ricevuto, chiudo il server'
  95.         server.socket.close()
  96.  
  97. if __name__ == '__main__':
  98.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement