From 62446501806255ae0506c93effa0452c3dc1fe48 Mon Sep 17 00:00:00 2001 From: Nova Date: Sat, 3 May 2025 23:47:30 +0200 Subject: [PATCH] Fix for #4, more permanent solution --- cert.pem | 21 --------------------- certgen.py | 4 ++-- key.pem | 27 --------------------------- pywebsrv.conf | 2 +- pywebsrv.py | 32 +++++++------------------------- 5 files changed, 10 insertions(+), 76 deletions(-) delete mode 100644 cert.pem delete mode 100644 key.pem diff --git a/cert.pem b/cert.pem deleted file mode 100644 index 5c928e3..0000000 --- a/cert.pem +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIUbZA2WZ1Q7ZGmYttO+f6w5tFXZLMwDQYJKoZIhvcNAQEL -BQAwazELMAkGA1UEBhMCTk8xETAPBgNVBAgMCE5vcmRsYW5kMQ4wDAYDVQQHDAVC -b2TDuDEXMBUGA1UECgwOTm92YSdzIHRlc3QgQ0ExIDAeBgNVBAMMF05vdmEncyB0 -ZXN0aW5nIENBIENlcnQuMB4XDTI1MDMwNDIyMjMwNFoXDTI2MDMwNDIyMjMwNFow -bDELMAkGA1UEBhMCWloxDzANBgNVBAgMBkdsb2JhbDEPMA0GA1UEBwwGR2xvYmFs -MSAwHgYDVQQKDBdOb3ZhJ3MgdGVzdCBjZXJ0aWZpY2F0ZTEZMBcGA1UEAwwQTm92 -YSdzIHRlc3QgY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANmh -gdz5oi+Z1ci0oA1q4NeSeU7b58TkRPvz7g2th4x1OjOhyEA2qG2sOKpjwZ9FB7Ce -TPenZ3M3ISq5MQxGJdHB5tzP86d4fbnRldqS3hs+XW+OYvVWcIonHr8OQXsx1qFP -2yJGIVRMDcxarFg4ZnIk/M5LsgogrYnhOVhg9mi58tLKp+Q+D10RwDPppi0/e5Ud -XM4qrkysY0rA1DwiAgj5MSWwnDCTeUbZDA+znBV5b521VS2XkoVhy49A3lCO2YHc -zAdoyLwAUl84lDN5oQPlqkMN2kEDJw2UDxpCFmzdVvMX30uuQY+vpYI0suwrDBye -0VxkAwX5qI454SLydE8CAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0G -CSqGSIb3DQEBCwUAA4IBAQCIRzTVzeRxWFmBg2wo1W9QXdVorAALw+xcceypHdrA -GYTW7WYLmxXHTSy414p0KFdQ9/CgUpXE0LxwD1gLmWlKEheqlh2T9FPBUK/axZvG -00o/YtAaSDHtiC+OcEzPfTFxEpdOoMMBoCpyLBt+0CgfV1BJFRK9Hw7ZOaVQ2eLC -nxBypEKf3hv0gtGaKnm+vFYDm4Az3+CojtzJiR07WUsPn5HvbOgH6k7jmKuFiR2w -FpPrErVbbLMCZB7+uxfaJyQaEc9DmUf+LDFLbVkM7gk1o249WLjRR5d8MatkwEPN -auYdVlrb/CpxTbNzzipFCX+hnFojuFjXp266woplKleW ------END CERTIFICATE----- diff --git a/certgen.py b/certgen.py index 26821ea..1a81cf1 100644 --- a/certgen.py +++ b/certgen.py @@ -9,7 +9,7 @@ class AutoCertGen: def __init__(self): pass - def gen_cert(): + def gen_cert(self): # Generate private key private_key = rsa.generate_private_key( public_exponent=65537, @@ -55,7 +55,7 @@ class AutoCertGen: ) # Save certificate - with open("certificate.pem", "wb") as f: + with open("cert.pem", "wb") as f: f.write(certificate.public_bytes(serialization.Encoding.PEM)) print("Self-signed certificate and private key generated for HTTPS server!") diff --git a/key.pem b/key.pem deleted file mode 100644 index e137cae..0000000 --- a/key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA2aGB3PmiL5nVyLSgDWrg15J5TtvnxORE+/PuDa2HjHU6M6HI -QDaobaw4qmPBn0UHsJ5M96dnczchKrkxDEYl0cHm3M/zp3h9udGV2pLeGz5db45i -9VZwiicevw5BezHWoU/bIkYhVEwNzFqsWDhmciT8zkuyCiCtieE5WGD2aLny0sqn -5D4PXRHAM+mmLT97lR1cziquTKxjSsDUPCICCPkxJbCcMJN5RtkMD7OcFXlvnbVV -LZeShWHLj0DeUI7ZgdzMB2jIvABSXziUM3mhA+WqQw3aQQMnDZQPGkIWbN1W8xff -S65Bj6+lgjSy7CsMHJ7RXGQDBfmojjnhIvJ0TwIDAQABAoIBAACkfu8pl4Z/dEei -7OQNQDuytYP7lzwYFnIN/tJwhDlwcSsM27wAzU+Blis+nyg6unKVjRGgH2iSLZlk -MZZhMKRlZ6qYPJZufySIz2H1VA2NihYVvAoQZsWppugWgS/9bi5Mv49i2J9YmCPV -0rNx+y90F4D+bTilbw28qgAuTRvzCzTYqcOLnBvjfHfhh1gzOADB4zHGjEb4qwWd -GCPGs85tzfT2Bez6GTCvzNEf8kmGO8EwynZk20SPkswcMIQhES1S6wC3zOi0C9+Y -B4dVnfgtukvsgG+AAtBo8rx6iVIKlGMU3xex9+aZPiJ8O8A/zOJU34IpdDMf7Oha -bK44pgUCgYEA9mK6tmSgN6Sqji9r7hWSse+tX6faeIeFSDIo33pre2jNyM1qTBHY -VZ54CoGa02PLRclqci0TsRaN5Gh+wLVzLW2NDLMEZFXIELF4vGexGnOWLYrxp4hm -uk8rQskoa7/pE7gyjgbYjXqn+wM2ifyc/XXFwTbjbFrj7zPkEdhNmV0CgYEA4h+I -MLn+4PvABojLekU8EHVLAjnWbKYie/a0ELYDz+DZiGgtU21q4HgaOI8SSRA/UvFW -l1i75NmKALT/d89Bok0THmfWAIIPzbsboRJe8f8uce9ICwdmbYKHCJwmgDyhq4ic -UoDzWAuUQa144tcC91Mop5VYa5Ee8TYswIuybZsCgYEA0oQw/D6mFmT/xVUHZvnP -yXD8Ncr5hBpm6vTQr4Gt7Ffz3CqHNE/bA+zOrEtouk1+FTavWLbjKGAZBJu0EXv3 -2UzNQ5iBnCkfNAQvIOuICw3Pt0IMkBSfkXirgfjWLJpgz5SGvYtj5B51AKgSJXxN -ttK2EQyQ7LgMIQm5SPYD95ECgYEAlJykpWGYYcUTLzg4guN91lNAOPZKNp35i/9X -2KPHXZgpX70YDPycgWpt0T42hk5nT9vNTSrEUmOmj1BllhhgyopdRl54B11zhYKz -Zejs/Z74p2jbsGPsrYxbswztQNqYZmQiWRbm17bEeWXJTUyCZooA7iL5Objm3SD9 -yI4HdoECgYEAzNAa7QJy/bgjuaP8fNx+vfsgMWQ9WT12IXnoiJN4I6mKBrSoJGJ2 -EeM41K1lRglI70WDHFPVn7AQvLiFgfWRoI0ucT65VUzYHT+m2g4p7wwb4wPLkhoj -nMLthqEoO+CMIrdGSUVmOwlQ4SnKn9G9a2R4yAEJzkItsYDWD+/hzTc= ------END RSA PRIVATE KEY----- diff --git a/pywebsrv.conf b/pywebsrv.conf index 52f9767..032ec41 100644 --- a/pywebsrv.conf +++ b/pywebsrv.conf @@ -4,7 +4,7 @@ port:8080 port-https:8443 # Here you choose what directory PyWebServer looks in for files. -directory: +directory:/home/nova/PyWebServer/html # Host defenition, what hosts you can connect via. # You can use FQDNs, IP-addresses and localhost, # Support for multiple hosts is coming. diff --git a/pywebsrv.py b/pywebsrv.py index ee8375c..8313e34 100644 --- a/pywebsrv.py +++ b/pywebsrv.py @@ -59,6 +59,7 @@ class FileHandler: def __init__(self, base_dir=None): self.config_path = os.path.join(os.getcwd(), self.CONFIG_FILE) + self.base_dir = self.read_config("directory") def check_first_run(self): if not os.path.isfile(self.config_path): @@ -262,17 +263,17 @@ class WebServer: self.http_404_html = ( "HTTP 404 - PyWebServer" - "

HTTP 404 - Not Found!

Running PyWebServer/1.1

" + "

HTTP 404 - Not Found!

Running PyWebServer/1.1+u2

" "
" ) self.http_403_html = ( "HTTP 403 - PyWebServer" - "

HTTP 403 - Forbidden

Running PyWebServer/1.1

" + "

HTTP 403 - Forbidden

Running PyWebServer/1.1+u2

" "
" ) self.http_405_html = ( "HTTP 405 - PyWebServer" - "

HTTP 405 - Method not allowed

Running PyWebServer/1.1

" + "

HTTP 405 - Method not allowed

Running PyWebServer/1.1+u2

" "
" ) @@ -418,7 +419,7 @@ class WebServer: headers = ( f"HTTP/1.1 {status_code} {status_message}\r\n" - f"Server: PyWebServer/1.1\r\n" + f"Server: PyWebServer/1.1+u2\r\n" f"Content-Type: {content_type}\r\n" f"Content-Length: {len(binary_data)}\r\n" f"Connection: close\r\n\r\n" @@ -449,7 +450,7 @@ class WebServer: headers = ( f"HTTP/1.1 {status_code} {status_message}\r\n" - f"Server: PyWebServer/1.1\r\n" + f"Server: PyWebServer/1.1+u2\r\n" f"Content-Length: {len(body)}\r\n" f"Connection: close\r\n\r\n" ).encode() @@ -466,26 +467,7 @@ class WebServer: def main(): file_handler = FileHandler() - first_run = file_handler.check_first_run() - if first_run is True: - print( - "*******************************************************************\n" - "* WARNING!! *\n" - "*******************************************************************\n" - "You have installed PyWebServer for the first time!\n" - "PyWebServer comes with test keys and certificates!\n" - "THESE SHOULD UNDER NO CIRCUMSTANCE BE USED IN ANYTHING BUT LOCAL TESTING!!!\n" - "IF YOU DON'T FOLLOW THESE INSTRUCTIONS YOU ARE PUTTING ALL YOUR TRAFFIC IN DANGER!!!\n" - "PLEASE REMOVE THEM ASAP IF YOU'RE USING THIS IN ANY FORM OF PRODUCTION!!!\n" - "*******************************************************************\n" - "* WARNING!! *\n" - "*******************************************************************\n" - ) - confirm = input("Do you understand? [y/N] ") - if confirm != "y": - print("User did not confirm, exiting!") - file_handler.didnt_confirm() - exit(1) + file_handler.check_first_run() file_handler.base_dir = file_handler.read_config("directory") http_port = file_handler.read_config("port") or 8080 https_port = file_handler.read_config("port-https") or 8443