forked from seba/servefile
Added option for changing the http basic auth realm
This commit is contained in:
parent
9c4df009ee
commit
c357b585e6
13
servefile
13
servefile
|
@ -756,10 +756,11 @@ class ServeFile():
|
||||||
def _getKey(self):
|
def _getKey(self):
|
||||||
return self.key
|
return self.key
|
||||||
|
|
||||||
def setAuth(self, user, password):
|
def setAuth(self, user, password, realm=None):
|
||||||
if len(user) == "" or len(password) == "":
|
if len(user) == "" or len(password) == "":
|
||||||
raise ServeFileException("User and password both need to be at least one character.")
|
raise ServeFileException("User and password both need to be at least one character.")
|
||||||
self.auth = base64.b64encode("%s:%s" % (user, password))
|
self.auth = base64.b64encode("%s:%s" % (user, password))
|
||||||
|
self.authrealm = realm
|
||||||
|
|
||||||
def _createServer(self, handler, withv6=False):
|
def _createServer(self, handler, withv6=False):
|
||||||
ThreadedHTTPServer.address_family = socket.AF_INET
|
ThreadedHTTPServer.address_family = socket.AF_INET
|
||||||
|
@ -869,6 +870,8 @@ class ServeFile():
|
||||||
if self.auth:
|
if self.auth:
|
||||||
# do authentication
|
# do authentication
|
||||||
AuthenticationHandler.authString = self.auth
|
AuthenticationHandler.authString = self.auth
|
||||||
|
if self.authrealm:
|
||||||
|
AuthenticationHandler.realm = self.authrealm
|
||||||
class AuthenticatedHandler(AuthenticationHandler, handler):
|
class AuthenticatedHandler(AuthenticationHandler, handler):
|
||||||
pass
|
pass
|
||||||
handler = AuthenticatedHandler
|
handler = AuthenticatedHandler
|
||||||
|
@ -935,6 +938,8 @@ def main():
|
||||||
help="Certfile to use for SSL")
|
help="Certfile to use for SSL")
|
||||||
parser.add_argument('-a', '--auth', type=str, metavar='user:password', \
|
parser.add_argument('-a', '--auth', type=str, metavar='user:password', \
|
||||||
help="Set user and password for HTTP basic authentication")
|
help="Set user and password for HTTP basic authentication")
|
||||||
|
parser.add_argument('--realm', type=str, default=None,\
|
||||||
|
help="Set the realm for HTTP basic authentication")
|
||||||
parser.add_argument('-t', '--tar', action="store_true", default=False, \
|
parser.add_argument('-t', '--tar', action="store_true", default=False, \
|
||||||
help="Enable on the fly tar creation for given file or directory. Note: Download continuation will not be available")
|
help="Enable on the fly tar creation for given file or directory. Note: Download continuation will not be available")
|
||||||
parser.add_argument('-c', '--compression', type=str, metavar='method', \
|
parser.add_argument('-c', '--compression', type=str, metavar='method', \
|
||||||
|
@ -984,6 +989,10 @@ def main():
|
||||||
print "Error: User and password for HTTP basic authentication need to be both at least one character band have to be seperated by a \":\"."
|
print "Error: User and password for HTTP basic authentication need to be both at least one character band have to be seperated by a \":\"."
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
if args.realm and not args.auth:
|
||||||
|
print "You can only specify a realm when HTTP basic authentication is enabled."
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if args.compression != "none" and not args.tar:
|
if args.compression != "none" and not args.tar:
|
||||||
print "Error: Please use --tar if you want to tar everything."
|
print "Error: Please use --tar if you want to tar everything."
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -1032,7 +1041,7 @@ def main():
|
||||||
server.setSSLKeys(cert, args.key)
|
server.setSSLKeys(cert, args.key)
|
||||||
if args.auth:
|
if args.auth:
|
||||||
user, password = args.auth.split(":", 1)
|
user, password = args.auth.split(":", 1)
|
||||||
server.setAuth(user, password)
|
server.setAuth(user, password, args.realm)
|
||||||
if compression and compression != "none":
|
if compression and compression != "none":
|
||||||
server.setCompression(compression)
|
server.setCompression(compression)
|
||||||
if args.ipv4_only or not socket.has_ipv6:
|
if args.ipv4_only or not socket.has_ipv6:
|
||||||
|
|
Loading…
Reference in New Issue