Compare commits
2 Commits
54c9ccef80
...
1.2.2
Author | SHA1 | Date | |
---|---|---|---|
36a76c4af7 | |||
4c8f908f18 |
0
banlist.lol
Normal file
0
banlist.lol
Normal file
@@ -1,4 +1,4 @@
|
||||
name="debweb 1.2.2"
|
||||
name="debweb 1.2.3"
|
||||
proxied=False
|
||||
|
||||
addr="localhost"
|
||||
@@ -6,6 +6,7 @@ port=7856
|
||||
|
||||
log_file=None
|
||||
preset_file="preset.html"
|
||||
banlist_file="banlist.lol"
|
||||
directory="files/"
|
||||
|
||||
read_buffer=16384
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<html>
|
||||
<head><title>404 Forbidden</title></head>
|
||||
<head><title>403 Forbidden</title></head>
|
||||
<body>
|
||||
<center><h1>404 Forbidden</h1></center>
|
||||
<center><h1>403 Forbidden</h1></center>
|
||||
<hr><center>debweb</center>
|
||||
</body>
|
||||
</html>
|
||||
|
14
main.py
14
main.py
@@ -77,7 +77,6 @@ class WebServer:
|
||||
|
||||
if real_addr and config.proxied:
|
||||
addr = (real_addr, addr[1])
|
||||
|
||||
request = data.split("\n")[0]
|
||||
parts = request.split()
|
||||
if len(parts) < 2: return
|
||||
@@ -86,7 +85,7 @@ class WebServer:
|
||||
file_name = path[1:] if path.startswith('/') else path
|
||||
file_path = os.path.abspath(os.path.join(config.directory, file_name))
|
||||
|
||||
if not file_path.startswith(os.path.abspath(config.directory)):
|
||||
if not file_path.startswith(os.path.abspath(config.directory)): # directory traversal
|
||||
await self.log(config.err_msgs[418], addr, file_path)
|
||||
file_size = os.path.getsize(config.err_files[418])
|
||||
await self.send_headers(writer, 418, file_size)
|
||||
@@ -97,6 +96,17 @@ class WebServer:
|
||||
return
|
||||
|
||||
|
||||
if addr[0] in utils.get_banlist(config.banlist_file): # banlist for pidors
|
||||
await self.log(config.err_msgs[403], addr, file_path)
|
||||
file_size = os.path.getsize(config.err_files[403])
|
||||
await self.send_headers(writer, 403, file_size)
|
||||
await self.send_file(writer, config.err_files[403], file_size)
|
||||
|
||||
writer.close()
|
||||
await writer.wait_closed()
|
||||
return
|
||||
|
||||
|
||||
if os.path.isfile(file_path):
|
||||
mime, _ = mimetypes.guess_type(file_path)
|
||||
file_size = os.path.getsize(file_path)
|
||||
|
4
utils.py
4
utils.py
@@ -11,3 +11,7 @@ def get_create_time(path: str, format: str="%a %b %e %H:%M:%S %Z %Y") -> str:
|
||||
create_time = os.path.getctime(path)
|
||||
create_datetime = datetime.datetime.fromtimestamp(create_time)
|
||||
return create_datetime.strftime(format)
|
||||
|
||||
|
||||
def get_banlist(path: str) -> list:
|
||||
return list(set(open("banlist.lol").readlines()))
|
Reference in New Issue
Block a user