- from http.server import BaseHTTPRequestHandler, HTTPServer 
- import time 
- import re 
- import subprocess 
- import random 
- import string 
- import urllib.parse as urlparse 
-   
- HOST = '0.0.0.0' 
- PORT = 7010 
-   
- challenge_file = open('flag20.txt', 'r')  # open the file to read 
- challenge_data = challenge_file.readlines()  # stores a list of lines from the file 
-   
- # create an HTTP handler based on the existing BaseHTTPRequestHandler 
- class HTTPHandler(BaseHTTPRequestHandler): 
-   
-     def do_GET(self):  # generate the status code for the GET request 
-         self.respond({'status': 200}) 
-   
-     def handle_http(self, status_code, path):  # handle the request 
-         self.send_response(status_code) 
-         self.send_header('Content-type', 'text/html') 
-         self.end_headers() 
-   
-         output = '' 
-   
-         # this will define how many lines of data the user can read from the file 
-         # read about GET parameters here: https://e...content-available-to-author-only...e.com/wiki/GET_Parameter 
-         get_params = urlparse.urlparse(path) # read the GET parameters from the URL that user requested 
-         # if the username and language are passed in GET parameters, then save that to a file 
-         if 'username' in urlparse.parse_qs(get_params.query) and 'language' in urlparse.parse_qs(get_params.query): 
-             username = urlparse.parse_qs(get_params.query)['username'][0] 
-             language = urlparse.parse_qs(get_params.query)['language'][0] 
-   
-             print(username + ' ' + language) 
-   
-             # run the native Linux command, given user's input of the username and language 
-             # basically saves the language request in a file with the username 
-             cmd = 'echo {} > ./languages/{}.txt'.format(language, username) 
-   
-             subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
-   
-             output = 'The data has been saved to the file and you can rest assured that your language shall be spoken!' 
-         elif path == '/LICENSE.md': 
-             license_file = open('LICENSE.md', 'r') 
-             license_data = license_file.readlines() 
-             license_file.close() 
-             for line in license_data: 
-                 output += line.replace('\n', '<br>') 
-             # update the license file just in case 
-             license_file = open('LICENSE.md', 'w') 
-             license_file.write('''# License Agreement 
-   
- If this software causes you to go bananas, accidentally destroys all your data on your laptop, changes all your messages to memes, encrypts your personal information and publishes it online, makes you wake up at 5 am on Sunday morning and exercise, calls all people on your contact list every hour, memefies your life (if it's even a word) calls Microsoft Helpdesk for no valid reason, makes fun of you in your sleep, shocks you if you don't pay attention in class, and frantically starts doing a filibuster speech -- don't blame Russians, blame their subconscious mind. 
-             ''') 
-             license_file.close() 
-         else: 
-             output = 'Freedom to changing your language without barriers!' 
-   
-         # generate the output to show to the user 
-         current_output = '''<p>{}</p>'''.format(output) 
-   
-         # make the HTML page to show the user and insert current_output there 
-         content = ''.join(open('index.html', 'r')).replace('CONTENT_PLACEMENT', current_output) 
-   
-         return bytes(content, 'UTF-8') 
-   
-     def respond(self, opts): 
-         response = self.handle_http(opts['status'], self.path) 
-         self.wfile.write(response) 
-   
- if __name__ == '__main__': 
-     server = HTTPServer 
-     httpd = server((HOST, PORT), HTTPHandler) 
-     print(time.asctime(), 'Server Starts - %s:%s' % (HOST, PORT)) 
-     try: 
-         httpd.serve_forever() 
-     except KeyboardInterrupt: 
-         pass 
-     httpd.server_close() 
-     print(time.asctime(), 'Server Stops - %s:%s' % (HOST, PORT))