You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.9 KiB

#
# _ __ ,---. .-._ _,.---._ ,---.
# .-`.' ,`..--.' \ /==/ \ .-._ _,..---._ ,-.' , - `. .-.,.---. .--.' \
# /==/, - \==\-/\ \ |==|, \/ /, /==/, - \ /==/_, , - \ /==/ ` \ \==\-/\ \
# |==| _ .=. /==/-|_\ | |==|- \| ||==| _ _\==| .=. |==|-, .=., |/==/-|_\ |
# |==| , '=',\==\, - \ |==| , | -||==| .=. |==|_ : ;=: - |==| '=' /\==\, - \
# |==|- '..'/==/ - ,| |==| - _ ||==|,| | -|==| , '=' |==|- , .' /==/ - ,|
# |==|, | /==/- /\ - \|==| /\ , ||==| '=' /\==\ - ,_ /|==|_ . ,'./==/- /\ - \
# /==/ - | \==\ _.\=\.-'/==/, | |- ||==|-, _`/ '.='. - .' /==/ /\ , )==\ _.\=\.-'
# `--`---' `--` `--`./ `--``-.`.____.' `--`--'' `--`-`--`--' `--`
#
# VERSION 0.75
#
# POST and GET kinda implemented
# You gonna need to run PANDORA from the root of the project
# That you're serving
# Otherwhise its not gonna work
#
#
# TODO:
# Serve specific folders/files
# Change dinamically the host
# SSL integration
import http.server
import socket
import socketserver
from io import BytesIO
import ssl # For future implementation with Openssl
PORT = 8040 # Define the standard port
HOST = 'localhost' # Define the standard host
Request = http.server.SimpleHTTPRequestHandler # Simple http request handler, it commits all files and directories within the SelfHost.py folder
SERVE = '/deploy' # Main folder to serve
TEST = '/test' # Test folder
class Pandora():
def Logo():
logo = open('etc/logo.txt', 'r')
for line in logo.readlines():
print(line, end = '')
def Ssl():
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.load_cert_chain(certfile='YOUR CERT')
bindsocket = socket.socket()
bindsocket.bind('', 2099)
bindsocket.listen(5)
def GET(self): # Shitty implementation of GET request
self.sendResponse(200) # Average time response in MS
self.endHeaders()
self.wfile.write('GET REQUEST')
def POST(self): # Shitty implementation of POST request
contentLength = int(self.headers['Content Length'])
body = self.rfile.read(contentLength)
self.sendResponse(200) # Average time response in MS
self.endHeaders()
response = BytesIO()
response.write(b'POST REQUEST SENDED')
response.write(b'RECEIVED POST REQUEST ')
response.write(body)
self.wfile.write(response.getvalue())
def Server():
with socketserver.TCPServer((HOST, PORT), Request) as httpd: # ("host/ip address", desired port), call the resquests from files
print('\n\nRunning @ ',HOST,':',PORT) # Simply outputs on terminal the port that the server is operating
print('Please, open your browser.\n')
httpd.serve_forever() # Method that simply begins listening and responding to incoming requests
while socketserver == True:
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listener.bind((HOST, PORT))
listener.listen(1)
listener.sendall(httpd)
# LOOP
Logo()
Server()