updated on Fri Jan 6 08:01:17 UTC 2012
[aur-mirror.git] / woof-python3 / woof-python3.patch
blob1258eb44bfba61ba95237dfa7ecf9c35ecd7d610
1 diff -aur package.pristine/woof-2009-12-27.py package.new/woof-2009-12-27.py
2 --- package.pristine/woof-2009-12-27.py 2009-12-27 23:47:43.000000000 +0100
3 +++ package.new/woof-2009-12-27.py 2011-02-08 20:38:51.150000040 +0100
4 @@ -26,9 +26,9 @@
5 # tarfile usage suggested by Morgan Lefieux <comete@geekandfree.org>
6 # File upload support loosely based on code from Stephen English <steve@secomputing.co.uk>
8 -import sys, os, errno, socket, getopt, commands, tempfile
9 -import cgi, urllib, BaseHTTPServer
10 -import ConfigParser
11 +import sys, os, errno, socket, getopt, subprocess, tempfile
12 +import cgi, urllib.request, urllib.parse, urllib.error, http.server
13 +import configparser
14 import shutil, tarfile, zipfile
15 import struct
17 @@ -38,6 +38,9 @@
18 compressed = 'gz'
19 upload = False
21 +class EvilZipStreamWrapperError(Exception):
22 + def __str__(self):
23 + return "unexpected seek for EvilZipStreamWrapper"
25 class EvilZipStreamWrapper(TM):
26 def __init__ (self, victim):
27 @@ -64,7 +67,7 @@
28 self.tells = []
29 self.in_file_data = 0
30 else:
31 - raise "unexpected seek for EvilZipStreamWrapper"
32 + raise EvilZipStreamWrapperError
34 def write (self, data):
35 # only test for headers if we know that we're not writing
36 @@ -119,7 +122,7 @@
37 # Currently it is impossible to serve different files with different
38 # instances of this class.
40 -class FileServHTTPRequestHandler (BaseHTTPServer.BaseHTTPRequestHandler):
41 +class FileServHTTPRequestHandler (http.server.BaseHTTPRequestHandler):
42 server_version = "Simons FileServer"
43 protocol_version = "HTTP/1.0"
45 @@ -127,7 +130,7 @@
47 def log_request (self, code='-', size='-'):
48 if code == 200:
49 - BaseHTTPServer.BaseHTTPRequestHandler.log_request (self, code, size)
50 + http.server.BaseHTTPRequestHandler.log_request (self, code, size)
53 def do_POST (self):
54 @@ -146,7 +149,7 @@
55 environ = {'REQUEST_METHOD' : 'POST'},
56 keep_blank_values = 1,
57 strict_parsing = 1)
58 - if not form.has_key ("upfile"):
59 + if "upfile" not in form:
60 self.send_error (403, "No upload provided")
61 return
63 @@ -167,9 +170,9 @@
64 for suffix in ["", ".1", ".2", ".3", ".4", ".5", ".6", ".7", ".8", ".9"]:
65 destfilename = os.path.join (".", upfilename + suffix)
66 try:
67 - destfile = os.open (destfilename, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0644)
68 + destfile = os.open (destfilename, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644)
69 break
70 - except OSError, e:
71 + except OSError as e:
72 if e.errno == errno.EEXIST:
73 continue
74 raise
75 @@ -178,7 +181,7 @@
76 upfilename += "."
77 destfile, destfilename = tempfile.mkstemp (prefix = upfilename, dir = ".")
79 - print >>sys.stderr, "accepting uploaded file: %s -> %s" % (upfilename, destfilename)
80 + print("accepting uploaded file: %s -> %s" % (upfilename, destfilename), file=sys.stderr)
82 shutil.copyfileobj (upfile.file, os.fdopen (destfile, "w"))
84 @@ -193,7 +196,7 @@
85 <p>Thanks a lot!</p>
86 </body>
87 </html>
88 - """
89 + """.encode('utf-8')
90 self.send_response (200)
91 self.send_header ("Content-Type", "text/html")
92 self.send_header ("Content-Length", str (len (txt)))
93 @@ -221,7 +224,7 @@
94 </form>
95 </body>
96 </html>
97 - """
98 + """.encode('utf-8')
99 self.send_response (200)
100 self.send_header ("Content-Type", "text/html")
101 self.send_header ("Content-Length", str (len (txt)))
102 @@ -232,8 +235,8 @@
103 # Redirect any request to the filename of the file to serve.
104 # This hands over the filename to the client.
106 - self.path = urllib.quote (urllib.unquote (self.path))
107 - location = "/" + urllib.quote (os.path.basename (self.filename))
108 + self.path = urllib.parse.quote (urllib.parse.unquote (self.path))
109 + location = "/" + urllib.parse.quote (os.path.basename (self.filename))
110 if os.path.isdir (self.filename):
111 if compressed == 'gz':
112 location += ".tar.gz"
113 @@ -245,11 +248,11 @@
114 location += ".tar"
116 if self.path != location:
117 - txt = """\
118 + txt = ("""\
119 <html>
120 <head><title>302 Found</title></head>
121 <body>302 Found <a href="%s">here</a>.</body>
122 - </html>\n""" % location
123 + </html>\n""" % location).encode('utf-8')
124 self.send_response (302)
125 self.send_header ("Location", location)
126 self.send_header ("Content-Type", "text/html")
127 @@ -276,7 +279,7 @@
128 type = "dir"
130 if not type:
131 - print >> sys.stderr, "can only serve files or directories. Aborting."
132 + print("can only serve files or directories. Aborting.", file=sys.stderr)
133 sys.exit (1)
135 self.send_response (200)
136 @@ -288,7 +291,7 @@
138 try:
139 if type == "file":
140 - datafile = file (self.filename)
141 + datafile = open (self.filename, 'br')
142 shutil.copyfileobj (datafile, self.wfile)
143 datafile.close ()
144 elif type == "dir":
145 @@ -301,7 +304,7 @@
146 for f in files:
147 filename = os.path.join (root, f)
148 if filename[:len (stripoff)] != stripoff:
149 - raise RuntimeException, "invalid filename assumptions, please report!"
150 + raise RuntimeException("invalid filename assumptions, please report!")
151 zfile.write (filename, filename[len (stripoff):])
152 zfile.close ()
153 else:
154 @@ -310,9 +313,9 @@
155 tfile.add (self.filename,
156 arcname=os.path.basename(self.filename))
157 tfile.close ()
158 - except Exception, e:
159 - print e
160 - print >>sys.stderr, "Connection broke. Aborting"
161 + except Exception as e:
162 + print(e)
163 + print("Connection broke. Aborting", file=sys.stderr)
166 def serve_files (filename, maxdown = 1, ip_addr = '', port = 8080):
167 @@ -326,16 +329,16 @@
168 FileServHTTPRequestHandler.filename = filename
170 try:
171 - httpd = BaseHTTPServer.HTTPServer ((ip_addr, port),
172 + httpd = http.server.HTTPServer ((ip_addr, port),
173 FileServHTTPRequestHandler)
174 except socket.error:
175 - print >>sys.stderr, "cannot bind to IP address '%s' port %d" % (ip_addr, port)
176 + print("cannot bind to IP address '%s' port %d" % (ip_addr, port), file=sys.stderr)
177 sys.exit (1)
179 if not ip_addr:
180 ip_addr = find_ip ()
181 if ip_addr:
182 - print "Now serving on http://%s:%s/" % (ip_addr, httpd.server_port)
183 + print("Now serving on http://%s:%s/" % (ip_addr, httpd.server_port))
185 while cpid != 0 and maxdownloads > 0:
186 httpd.handle_request ()
187 @@ -344,7 +347,7 @@
189 def usage (defport, defmaxdown, errmsg = None):
190 name = os.path.basename (sys.argv[0])
191 - print >>sys.stderr, """
192 + print("""
193 Usage: %s [-i <ip_addr>] [-p <port>] [-c <count>] <file>
194 %s [-i <ip_addr>] [-p <port>] [-c <count>] [-z|-j|-Z|-u] <dir>
195 %s [-i <ip_addr>] [-p <port>] [-c <count>] -s
196 @@ -376,11 +379,11 @@
197 count = 2
198 ip = 127.0.0.1
199 compressed = gz
200 - """ % (name, name, name, name, name, defmaxdown, defport)
201 + """ % (name, name, name, name, name, defmaxdown, defport), file=sys.stderr)
203 if errmsg:
204 - print >>sys.stderr, errmsg
205 - print >>sys.stderr
206 + print(errmsg, file=sys.stderr)
207 + print(file=sys.stderr)
208 sys.exit (1)
211 @@ -392,7 +395,7 @@
212 port = 8080
213 ip_addr = ''
215 - config = ConfigParser.ConfigParser()
216 + config = configparser.ConfigParser()
217 config.read (['/etc/woofrc', os.path.expanduser('~/.woofrc')])
219 if config.has_option ('main', 'port'):
220 @@ -420,7 +423,7 @@
222 try:
223 options, filenames = getopt.getopt (sys.argv[1:], "hUszjZui:c:p:")
224 - except getopt.GetoptError, desc:
225 + except getopt.GetoptError as desc:
226 usage (defaultport, defaultmaxdown, desc)
228 for option, val in options: