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
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() |