forked from seba/servefile
Introduced argparse
This commit is contained in:
parent
c186d5f695
commit
6a2fea1465
47
servefile
47
servefile
|
@ -4,6 +4,7 @@
|
|||
# written by seba (seba-geek.de) :)
|
||||
# v0.3
|
||||
|
||||
import argparse
|
||||
import BaseHTTPServer
|
||||
import commands
|
||||
import urllib
|
||||
|
@ -82,44 +83,40 @@ class ThreadedHTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer)
|
|||
pass
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2 or len(sys.argv) > 3 or sys.argv[1] in ('-h', '--help'):
|
||||
print "Usage: [path to file] <port=8080>"
|
||||
return
|
||||
|
||||
port = 8080
|
||||
if len(sys.argv) == 3:
|
||||
try:
|
||||
port = int(sys.argv[2])
|
||||
except ValueError:
|
||||
print "Error: Port should be an int!"
|
||||
return
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('filename', metavar='file/directory', type=str)
|
||||
parser.add_argument('-p', '--port', type=int, default=8080, \
|
||||
help='port to listen on')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
testit = open(sys.argv[1], 'r')
|
||||
testit = open(args.filename, 'r')
|
||||
testit.close()
|
||||
FileHandler.filePath = sys.argv[1]
|
||||
FileHandler.fileName = os.path.basename(sys.argv[1])
|
||||
FileHandler.fileLength = os.stat(sys.argv[1])[ST_SIZE]
|
||||
FileHandler.fileName = os.path.basename(args.filename)
|
||||
FileHandler.fileLength = os.stat(args.filename)[ST_SIZE]
|
||||
except IOError:
|
||||
print "Error: Could not open file!"
|
||||
return
|
||||
|
||||
server = ThreadedHTTPServer(('', port), FileHandler)
|
||||
print "Serving:", sys.argv[1]
|
||||
print "Port: ", port
|
||||
print "Ready..."
|
||||
server.address_family = 10
|
||||
sys.exit(3)
|
||||
|
||||
server = ThreadedHTTPServer(('', args.port), FileHandler)
|
||||
print "Serving \"%s\" under port %d" % (args.filename, args.port)
|
||||
|
||||
# print urls with local network adresses
|
||||
print "Some addresses this file will be available under:"
|
||||
ips = commands.getoutput(r"/bin/ip addr|sed -n -e 's/.*inet6\? \([0-9.a-fA-F:]\+\)\/.*/\1/ p'|grep -v '^fe80\|^127.0.0.1\|^::1'")
|
||||
print "\nSome addresses this file will be available under:"
|
||||
|
||||
ips = commands.getoutput(r"/bin/ip addr|" + \
|
||||
"sed -n -e 's/.*inet6\? \([0-9.a-fA-F:]\+\)\/.*/\\1/ p'|" + \
|
||||
"grep -v '^fe80\|^127.0.0.1\|^::1'")
|
||||
for ip in ips.split("\n"):
|
||||
if ip.find(":") >= 0:
|
||||
# ipv6
|
||||
ip = "[%s]" % ip
|
||||
# FIXME: When BaseHTTP supports ipv6 properly, delete this line
|
||||
continue
|
||||
print "http://%s:%d/" % (ip, port)
|
||||
|
||||
print "http://%s:%d/" % (ip, args.port)
|
||||
|
||||
try:
|
||||
server.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
|
|
Loading…
Reference in New Issue