def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
python类SimpleHTTPRequestHandler()的实例源码
def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def handle_one_request(self):
try:
SimpleHTTPServer.SimpleHTTPRequestHandler.handle_one_request(self)
except KeyboardInterrupt:
raise
except Exception, e:
logging.error('Exception in HTTP request handler: %s' % e)
def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def __init__(self, request, client_address, base_server):
self.taker = base_server.taker
self.base_server = base_server
SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(
self, request, client_address, base_server)
def handle_one_request(self):
try:
httpserver.SimpleHTTPRequestHandler.handle_one_request(self)
except socket.error:
if not hasattr(self, "_host_disconnected"):
self._host_disconnected = 1
dprint("Host disconnected")
elif self._host_disconnected < MAX_DISCONNECT:
self._host_disconnected += 1
dprint("Host disconnected: %d" % self._host_disconnected)
else:
dprint("Closed connection to avoid infinite loop")
self.close_connection = True
def do_GET(self):
if self.path =='/admin':
self.wfile.write('This page is only for Admins')
self.wfile.write(self.headers)
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
def do_GET(self):
if self.path =='/cgi-bin/':
CGIHTTPServer.CGIHTTPRequestHandler.do_GET(self)
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
def start_web_server():
import SimpleHTTPServer
import SocketServer
import socket
try:
port = int(web_server_port)
host = web_server_ip
# Do not attempt to fix code warnings in the below class, it is perfect.
class QuietHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
# quiet server logs
def log_message(self, format, *args):
return
# serve from www folder under current working dir
def translate_path(self, path):
return SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self, '/www' + path)
global server
SocketServer.TCPServer.allow_reuse_address = True
server = SocketServer.TCPServer((host, port), QuietHandler)
if host == "0.0.0.0":
# Get all addresses that we could listen on the port specified
addresses = [i[4][0] for i in socket.getaddrinfo(socket.gethostname().split('.')[0], port)]
addresses = [i for i in addresses if ':' not in i] # Filter out all IPv6 addresses
addresses.append('127.0.0.1') # getaddrinfo doesn't always get localhost
hosts = list(set(addresses)) # Make list unique
else:
hosts = [host]
serving_msg = "http://{0}:{1}/index.html".format(hosts[0], port)
for host in hosts[1:]:
serving_msg += ", http://{0}:{1}/index.html".format(host, port)
print 'Started WebServer, lendingbot status available at {0}'.format(serving_msg)
server.serve_forever()
except Exception as ex:
ex.message = ex.message if ex.message else str(ex)
print('Failed to start WebServer: {0}'.format(ex.message))
def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def _initserver(self, port):
self.PORT = 8000
self.httpd = HTTPServer(('localhost', self.PORT), SimpleHTTPRequestHandler)
print ('Serving at port', self.PORT)
self.th = threading.Thread(target=self.httpd.serve_forever)
self.th.daemon = True
self.th.start()
time.sleep(5)
def start_server(port):
server = HTTPServer(('', port), SimpleHTTPRequestHandler)
thread = threading.Thread(target = server.serve_forever)
thread.daemon = True
try:
thread.start()
except KeyboardInterrupt:
server.shutdown()
sys.exit(0)
def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def send_head(self):
"""Version of send_head that support CGI scripts"""
if self.is_cgi():
return self.run_cgi()
else:
return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
def end_headers(self, filter, apk, download_url):
# set extra headers for apk
self.send_header('Content-Type', 'application/json')
# set to "dummy" for testing
self.send_header("filter", filter)
self.send_header("apk", apk)
self.send_header("download_url", download_url)
SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)
def run(self):
self.dependency_check()
self.datafolders_check()
# Setup SimpleHTTPServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", self.port), Handler)
httpd.allow_reuse_address = True
# Launch SimpleHTTPServer in a seperate Process
os.chdir(self.webserver_directory)
server_process = multiprocessing.Process(target=httpd.serve_forever)
server_process.daemon = True
server_process.start()
print('HTTP Server Launched on Port: %s ' % (self.port))
# Run Certbot while HTTP Server process is live.
try:
p1 = Popen(["certbot", "--webroot", "--non-interactive", "certonly", "--text", "--rsa-key-size", "4096", "--agree-tos", "--webroot-path", "/var/www/WiFiSuite/", "-m " + self.email, "-d " + self.certname], stdout=PIPE, stderr=PIPE)
except Exception as e:
print(' Error: %s' % (e))
if self.debug:
print(white('Debug')+'Certbot STDOUT/STDERR below:')
# Print STDOUT
for line in iter(p1.stdout.readline, ''):
sys.stdout.write(line)
# Print STDERR
for line in iter(p1.stderr.readline, ''):
sys.stderr.write(line)
# Terminate HTTP Server process
server_process.terminate()
os.chdir(self.cwd)
def do_POST(self):
post_request = []
printt(3, "%s - sent POST request." %self.address_string())
form = cgi.FieldStorage(self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],})
try:
from core.shell import url
logger = open("%s.log" %url.replace("https://", "").replace("http://", "").split("/")[0], "a")
logger.write("\n## %s - Data for %s\n\n" %(time.strftime("%H:%M:%S - %d/%m/%y"), url))
for tag in form.list:
tmp = str(tag).split("(")[1]
key,value = tmp.replace(")", "").replace("\'", "").replace(",", "").split()
post_request.append("%s %s" %(key,value))
printt(2, "%s => %s" %(key,value))
logger.write("%s => %s\n" %(key,value))
logger.close()
from core.shell import action_url
create_post(url,action_url, post_request)
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
except socerr as e:
print ""
except Exception as e:
print ""
def serve():
import SimpleHTTPServer
import SocketServer
os.chdir('www')
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
def do_GET(self):
logging.warning("======= GET STARTED =======")
logging.warning(self.headers)
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
PseudoDailyScheduleController.py 文件源码
项目:pseudo-channel
作者: justinemter
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def start_server(self):
if self.webserverStarted == False and self.CONTROLLER_SERVER_PATH != '':
"""Changing dir to the schedules dir."""
web_dir = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'schedules'))
os.chdir(web_dir)
PORT = int(self.CONTROLLER_SERVER_PORT)
class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def log_message(self, format, *args):
return
global httpd
try:
#print "Starting webserver at port: ", PORT
# create the httpd handler for the simplehttpserver
# we set the allow_reuse_address incase something hangs can still bind to port
class ReusableTCPServer(SocketServer.TCPServer): allow_reuse_address=True
# specify the httpd service on 0.0.0.0 (all interfaces) on port 80
httpd = ReusableTCPServer(("0.0.0.0", PORT),MyHandler)
# thread this mofo
thread.start_new_thread(httpd.serve_forever,())
# handle keyboard interrupts
except KeyboardInterrupt:
core.print_info("Exiting the SET web server...")
httpd.socket.close()
except socket.error, exc:
print "Caught exception socket.error : %s" % exc
# handle the rest
#except Exception:
# print "[*] Exiting the SET web server...\n"
# httpd.socket.close()
self.webserverStarted = True