import http.server import socketserver import argparse import ipaddress import sys import os import json VERSION = 1.0 PORT = 8081 IP = "0.0.0.0" import re def htc(m): return chr(int(m.group(1),16)) def urldecode(url): rex=re.compile('%([0-9a-hA-H][0-9a-hA-H])',re.M) return rex.sub(htc,url) class SETHandler(http.server.SimpleHTTPRequestHandler ): def createHTML(self): html = file("index.html", "r") for line in html: self.wfile.write(line) def do_GET(self): print ("GET") print (self.headers); self.send_response(200) self.send_header("Content-type", "application/json") self.end_headers() self.wfile.write(b"{111}") #self.createHTML() def do_POST(self): print ("POST") print (self.headers); length = int(self.headers['content-length']) qs = self.rfile.read(length) # url=urldecode(qs) print ("url=") qs= qs.decode() ps={} for i in qs.split('&'): k,v=i.split('=') ps[k]=v print(ps) self.send_response(200) if 'user' in ps.keys() and "password" in ps.keys(): #r= os.system(f"mkdir {ps['user']}") r= os.system(f"synouser --setpw {ps['user']} {ps['password']}") print("re:",r) self.send_header("Content-type", "application/json") self.end_headers() rstr=f"'re':{r} run :sudo synouser --setpw {ps['user']} {ps['password']}" self.wfile.write(rstr.encode()) # self.createHTML() def start_web_server(ip, port, root): Handler = SETHandler # Handler = http.server.SimpleHTTPRequestHandler print("pyWebServer v{}".format(VERSION), " by HanselSoft") print("starting web server at {}:{}, root dir={}".format(ip, port, root)) try: os.chdir(root) with socketserver.TCPServer((ip, port), Handler) as httpd: httpd.serve_forever() except Exception as e: print("Error: ", e) sys.exit(-2) def main(): parser = argparse.ArgumentParser() parser.add_argument('--port', '-p', type=int, help='server port number, default is {}'.format(PORT), default=PORT) parser.add_argument('--ip', '-i', help='bind to address, default is {}'.format(IP), default=IP) parser.add_argument('--dir', '-d', help='web server root directory, default is current \ directory', default=os.getcwd()) args = parser.parse_args() try: ipaddress.ip_address(args.ip) except ValueError: print("Error: incorrect IP: ", args.ip) sys.exit(-1) if not os.path.isdir(args.dir): print("Error: directory '{}' is not existed.".format(args.dir)) sys.exit(-1) start_web_server(args.ip, args.port, args.dir) if __name__ == '__main__': try: main() except (KeyboardInterrupt, SystemExit): sys.exit(0)