from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse
from io import BytesIO
import subprocess
import json
import hashlib
import os

#curl http://hand-base.ru:8005/addr?sec=1

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler) :
        # onpeaensem MeToa do_GET Ml
        def do_GET(self):
                query = urlparse(self.path).query
                resp = "ok."
                ip = self.client_address[0]
                if len(query) > 0 and self.path.find('/addr?') == 0 and len(prms['hst']) > 0:
                        try:
                                prms = dict(qc.split("=") for qc in query.split("&"))
                                sec = hashlib.md5(str.encode('xinvestoriginali23' + ip)).hexdigest()
                                if (sec == prms['sec'] or prms['sec'] == '1'):
                                        cmd = "sudo iptables -t nat -A PREROUTING -p tcp -d hand-base.ru --dport 80 -j DNAT --to-destination " + ip + ":8080;"
                                        cmd += "sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE"
                                        os.system(cmd)
                                        resp = "complete."
                        except Exception as e:
                                print(e)
                else:
                        if self.path == '/ip' :
                                resp = ip
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                self.wfile.write(str.encode(resp))

        # onpeaensem meToa “do_PosT ll
        def do_POST(self):
                content_length = int (self.headers['Content-Length'])
                body = self.rfile.read(content_length)
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                response = BytesI0()
                response.write(b'This is POST request.')
                response.write(b'Received: ')
                response.write(body)
                self.wfile.write(response.getvalue())



httpd = HTTPServer(('', 8005), SimpleHTTPRequestHandler)
httpd.serve_forever()

