#!/usr/bin/python import os from json import loads from http.server import BaseHTTPRequestHandler, HTTPServer class Server(BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers['Content-Length']) data = loads(self.rfile.read(content_length).decode('utf-8')) data['password'] = os.popen('slappasswd -s "' + data['password'] + '"').read()[:-1] print(data) if data['code'] != code: print('Incorrect code') return if not all(c.isdigit() or c.islower() for c in data['username']) or data['username'][0].isdigit(): print('Bad username') return if '"' in data['firstname'] or '"' in data['lastname'] or '"' in data['email']: print('Cannot contain double quotes') return os.system('adduser "' + data['username'] + '" "' + data['firstname'].capitalize() + '" "' + data['lastname'].capitalize() + '" "' + data['email'] + '" "' + data['password'] + '" "' + ldap_pass + '"') self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() ldap_pass = input('LDAP password: ') code = input('Registration code: ') server_address = ('localhost', 6789) httpd = HTTPServer(server_address, Server) httpd.serve_forever()