- Update to version 2012.05.31 [1]
- Stage support PR: ports/186234 [1] Submitted by: maintainer
This commit is contained in:
parent
6477e3e896
commit
3278c8198c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=343302
3 changed files with 5 additions and 202 deletions
|
@ -2,7 +2,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= woof
|
||||
PORTVERSION= 2009.12.27
|
||||
PORTVERSION= 2012.05.31
|
||||
CATEGORIES= www
|
||||
MASTER_SITES= http://www.home.unix-ag.org/simon/
|
||||
DISTNAME= ${PORTNAME}-${PORTVERSION:S/./-/g}
|
||||
|
@ -18,18 +18,11 @@ USE_PYTHON= yes
|
|||
NO_BUILD= yes
|
||||
PLIST_FILES= bin/woof
|
||||
|
||||
NO_STAGE= yes
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${PYTHON_REL} >= 270
|
||||
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-woof-2009-12-27-python27.diff
|
||||
.endif
|
||||
|
||||
do-extract:
|
||||
@${MKDIR} ${WRKSRC}
|
||||
@${CP} ${DISTDIR}/${DISTFILES} ${WRKSRC}/${DISTFILES}
|
||||
|
||||
do-install:
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/${DISTFILES} ${PREFIX}/bin/woof
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/${DISTFILES} ${STAGEDIR}${PREFIX}/bin/woof
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
.include <bsd.port.mk>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
SHA256 (woof-2009-12-27.py) = 21086b67489381b477c9c0567b1d9f8b8f1deec12bd4e414969e3f155c1ff889
|
||||
SIZE (woof-2009-12-27.py) = 16810
|
||||
SHA256 (woof-2012-05-31.py) = d84353d07f768321a1921a67193510bf292cf0213295e8c7689176f32e945572
|
||||
SIZE (woof-2012-05-31.py) = 20284
|
||||
|
|
|
@ -1,190 +0,0 @@
|
|||
--- woof-2009-12-27.py.orig 2009-12-27 23:47:43.000000000 +0100
|
||||
+++ woof-2009-12-27.py 2011-02-08 20:38:51.150000040 +0100
|
||||
@@ -28,13 +28,13 @@
|
||||
|
||||
import sys, os, errno, socket, getopt, commands, tempfile
|
||||
import cgi, urllib, BaseHTTPServer
|
||||
+from SocketServer import ThreadingMixIn
|
||||
import ConfigParser
|
||||
import shutil, tarfile, zipfile
|
||||
import struct
|
||||
|
||||
maxdownloads = 1
|
||||
TM = object
|
||||
-cpid = -1
|
||||
compressed = 'gz'
|
||||
upload = False
|
||||
|
||||
@@ -137,6 +137,11 @@ class FileServHTTPRequestHandler (BaseHT
|
||||
self.send_error (501, "Unsupported method (POST)")
|
||||
return
|
||||
|
||||
+ maxdownloads -= 1
|
||||
+
|
||||
+ if maxdownloads < 1:
|
||||
+ httpd.shutdown()
|
||||
+
|
||||
# taken from
|
||||
# http://mail.python.org/pipermail/python-list/2006-September/402441.html
|
||||
|
||||
@@ -200,13 +205,11 @@ class FileServHTTPRequestHandler (BaseHT
|
||||
self.end_headers ()
|
||||
self.wfile.write (txt)
|
||||
|
||||
- maxdownloads -= 1
|
||||
-
|
||||
return
|
||||
|
||||
|
||||
def do_GET (self):
|
||||
- global maxdownloads, cpid, compressed, upload
|
||||
+ global maxdownloads, compressed, upload
|
||||
|
||||
# Form for uploading a file
|
||||
if upload:
|
||||
@@ -260,63 +263,62 @@ class FileServHTTPRequestHandler (BaseHT
|
||||
|
||||
maxdownloads -= 1
|
||||
|
||||
- # let a separate process handle the actual download, so that
|
||||
- # multiple downloads can happen simultaneously.
|
||||
+ if maxdownloads < 1:
|
||||
+ httpd.shutdown()
|
||||
|
||||
- cpid = os.fork ()
|
||||
+ type = None
|
||||
+
|
||||
+ if os.path.isfile (self.filename):
|
||||
+ type = "file"
|
||||
+ elif os.path.isdir (self.filename):
|
||||
+ type = "dir"
|
||||
|
||||
- if cpid == 0:
|
||||
- # Child process
|
||||
- child = None
|
||||
- type = None
|
||||
-
|
||||
- if os.path.isfile (self.filename):
|
||||
- type = "file"
|
||||
- elif os.path.isdir (self.filename):
|
||||
- type = "dir"
|
||||
+ if not type:
|
||||
+ print >> sys.stderr, "can only serve files or directories. Aborting."
|
||||
+ sys.exit (1)
|
||||
|
||||
- if not type:
|
||||
- print >> sys.stderr, "can only serve files or directories. Aborting."
|
||||
- sys.exit (1)
|
||||
+ self.send_response (200)
|
||||
+ self.send_header ("Content-Type", "application/octet-stream")
|
||||
+ if os.path.isfile (self.filename):
|
||||
+ self.send_header ("Content-Length",
|
||||
+ os.path.getsize (self.filename))
|
||||
+ self.end_headers ()
|
||||
|
||||
- self.send_response (200)
|
||||
- self.send_header ("Content-Type", "application/octet-stream")
|
||||
- if os.path.isfile (self.filename):
|
||||
- self.send_header ("Content-Length",
|
||||
- os.path.getsize (self.filename))
|
||||
- self.end_headers ()
|
||||
+ try:
|
||||
+ if type == "file":
|
||||
+ datafile = file (self.filename)
|
||||
+ shutil.copyfileobj (datafile, self.wfile)
|
||||
+ datafile.close ()
|
||||
+ elif type == "dir":
|
||||
+ if compressed == 'zip':
|
||||
+ ezfile = EvilZipStreamWrapper (self.wfile)
|
||||
+ zfile = zipfile.ZipFile (ezfile, 'w', zipfile.ZIP_DEFLATED)
|
||||
+ stripoff = os.path.dirname (self.filename) + os.sep
|
||||
|
||||
- try:
|
||||
- if type == "file":
|
||||
- datafile = file (self.filename)
|
||||
- shutil.copyfileobj (datafile, self.wfile)
|
||||
- datafile.close ()
|
||||
- elif type == "dir":
|
||||
- if compressed == 'zip':
|
||||
- ezfile = EvilZipStreamWrapper (self.wfile)
|
||||
- zfile = zipfile.ZipFile (ezfile, 'w', zipfile.ZIP_DEFLATED)
|
||||
- stripoff = os.path.dirname (self.filename) + os.sep
|
||||
+ for root, dirs, files in os.walk (self.filename):
|
||||
+ for f in files:
|
||||
+ filename = os.path.join (root, f)
|
||||
+ if filename[:len (stripoff)] != stripoff:
|
||||
+ raise RuntimeException, "invalid filename assumptions, please report!"
|
||||
+ zfile.write (filename, filename[len (stripoff):])
|
||||
+ zfile.close ()
|
||||
+ else:
|
||||
+ tfile = tarfile.open (mode=('w|' + compressed),
|
||||
+ fileobj=self.wfile)
|
||||
+ tfile.add (self.filename,
|
||||
+ arcname=os.path.basename(self.filename))
|
||||
+ tfile.close ()
|
||||
+ except Exception, e:
|
||||
+ print e
|
||||
+ print >>sys.stderr, "Connection broke. Aborting"
|
||||
|
||||
- for root, dirs, files in os.walk (self.filename):
|
||||
- for f in files:
|
||||
- filename = os.path.join (root, f)
|
||||
- if filename[:len (stripoff)] != stripoff:
|
||||
- raise RuntimeException, "invalid filename assumptions, please report!"
|
||||
- zfile.write (filename, filename[len (stripoff):])
|
||||
- zfile.close ()
|
||||
- else:
|
||||
- tfile = tarfile.open (mode=('w|' + compressed),
|
||||
- fileobj=self.wfile)
|
||||
- tfile.add (self.filename,
|
||||
- arcname=os.path.basename(self.filename))
|
||||
- tfile.close ()
|
||||
- except Exception, e:
|
||||
- print e
|
||||
- print >>sys.stderr, "Connection broke. Aborting"
|
||||
+
|
||||
+class ThreadedHTTPServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
||||
+ """Handle requests in a separate thread"""
|
||||
|
||||
|
||||
def serve_files (filename, maxdown = 1, ip_addr = '', port = 8080):
|
||||
- global maxdownloads
|
||||
+ global maxdownloads, httpd
|
||||
|
||||
maxdownloads = maxdown
|
||||
|
||||
@@ -326,8 +328,7 @@ def serve_files (filename, maxdown = 1,
|
||||
FileServHTTPRequestHandler.filename = filename
|
||||
|
||||
try:
|
||||
- httpd = BaseHTTPServer.HTTPServer ((ip_addr, port),
|
||||
- FileServHTTPRequestHandler)
|
||||
+ httpd = ThreadedHTTPServer ((ip_addr, port), FileServHTTPRequestHandler)
|
||||
except socket.error:
|
||||
print >>sys.stderr, "cannot bind to IP address '%s' port %d" % (ip_addr, port)
|
||||
sys.exit (1)
|
||||
@@ -337,8 +338,7 @@ def serve_files (filename, maxdown = 1,
|
||||
if ip_addr:
|
||||
print "Now serving on http://%s:%s/" % (ip_addr, httpd.server_port)
|
||||
|
||||
- while cpid != 0 and maxdownloads > 0:
|
||||
- httpd.handle_request ()
|
||||
+ httpd.serve_forever ()
|
||||
|
||||
|
||||
|
||||
@@ -488,14 +488,6 @@ def main ():
|
||||
|
||||
serve_files (filename, maxdown, ip_addr, port)
|
||||
|
||||
- # wait for child processes to terminate
|
||||
- if cpid != 0:
|
||||
- try:
|
||||
- while 1:
|
||||
- os.wait ()
|
||||
- except OSError:
|
||||
- pass
|
||||
-
|
||||
|
||||
|
||||
if __name__=='__main__':
|
Loading…
Reference in a new issue