add favicon.ico
This commit is contained in:
parent
d6d1f2b400
commit
4d91b8ab49
BIN
favicon.ico
Normal file
BIN
favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
21
server.py
21
server.py
@ -14,12 +14,12 @@ from network import HTTPBaseServer, HTTPResponseHeader
|
|||||||
app_dir = os.path.split(os.path.realpath(__file__))[0]
|
app_dir = os.path.split(os.path.realpath(__file__))[0]
|
||||||
index_path = os.path.join(app_dir, 'index.html')
|
index_path = os.path.join(app_dir, 'index.html')
|
||||||
|
|
||||||
def loadfile(path):
|
def loadfile(path, mode='r', encoding='utf-8'):
|
||||||
with open(path, 'r', encoding='utf-8') as f:
|
with open(path, mode, encoding=encoding) as f:
|
||||||
return f.read()
|
return f.read()
|
||||||
|
|
||||||
class HTTPImageServer():
|
class HTTPImageServer():
|
||||||
def __init__(self, bind_addr, imgroot='.', thumbnail='webp', allowcros=True, loglevel=2):
|
def __init__(self, bind_addr, imgroot='.', thumbnail='webp', allowcros=True, loglevel=2, favicon=None):
|
||||||
self.server = HTTPBaseServer(request_handler=self.handle, bind_addr=bind_addr)
|
self.server = HTTPBaseServer(request_handler=self.handle, bind_addr=bind_addr)
|
||||||
self.imgroot = imgroot
|
self.imgroot = imgroot
|
||||||
self.img_extension = ['png', 'jpg', 'jpeg', 'tiff', 'webp', 'bmp']
|
self.img_extension = ['png', 'jpg', 'jpeg', 'tiff', 'webp', 'bmp']
|
||||||
@ -28,6 +28,10 @@ class HTTPImageServer():
|
|||||||
self.thumbnail = thumbnail
|
self.thumbnail = thumbnail
|
||||||
self.allowcros = allowcros
|
self.allowcros = allowcros
|
||||||
self.loglevel = loglevel # 0: all information 1: only for response. 2: do not log image file. 3: no log.
|
self.loglevel = loglevel # 0: all information 1: only for response. 2: do not log image file. 3: no log.
|
||||||
|
self.icon = None
|
||||||
|
if favicon is not None:
|
||||||
|
with open(favicon, 'rb') as f:
|
||||||
|
self.icon = f.read()
|
||||||
def start(self, back=True):
|
def start(self, back=True):
|
||||||
t = threading.Thread(target=self.logger, name='Logger thread', daemon=True)
|
t = threading.Thread(target=self.logger, name='Logger thread', daemon=True)
|
||||||
t.start()
|
t.start()
|
||||||
@ -202,6 +206,15 @@ class HTTPImageServer():
|
|||||||
header = HTTPResponseHeader(200)
|
header = HTTPResponseHeader(200)
|
||||||
content = loadfile(index_path).encode('utf-8')
|
content = loadfile(index_path).encode('utf-8')
|
||||||
loglevel = 2
|
loglevel = 2
|
||||||
|
elif location == 'favicon.ico':
|
||||||
|
if self.icon is not None:
|
||||||
|
header = HTTPResponseHeader(200)
|
||||||
|
header['Content-Type'] = 'image/x-icon'
|
||||||
|
content = self.icon
|
||||||
|
else:
|
||||||
|
header = HTTPResponseHeader(404)
|
||||||
|
content = b''
|
||||||
|
loglevel = 2
|
||||||
else:
|
else:
|
||||||
header = HTTPResponseHeader(404)
|
header = HTTPResponseHeader(404)
|
||||||
content = b'Please Do Not Try To Access Non-Image File!'
|
content = b'Please Do Not Try To Access Non-Image File!'
|
||||||
@ -268,5 +281,5 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
addr = '{0}:{1}'.format(args.interface, args.port)
|
addr = '{0}:{1}'.format(args.interface, args.port)
|
||||||
print('Start HTTP server on {0} and use web root as {1}'.format(addr, args.root))
|
print('Start HTTP server on {0} and use web root as {1}'.format(addr, args.root))
|
||||||
server = HTTPImageServer(bind_addr=addr, imgroot=args.root, thumbnail=args.thumbnail, allowcros=args.cros, loglevel=args.loglevel)
|
server = HTTPImageServer(bind_addr=addr, imgroot=args.root, thumbnail=args.thumbnail, allowcros=args.cros, loglevel=args.loglevel, favicon='./favicon.ico')
|
||||||
server.start(back=False)
|
server.start(back=False)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user