# THIS SOFTWARE IS A PART OF FREE COMPETITOR PROJECT # THE FOLLOWING SOURCE CODE I UNDER THE GNU # AGPL LICENSE V3 OR ANY LATER VERSION. # This project is not for simple users, but for # web-masters and a like, so we are counting on # your ability to set it up and running. # Server side from http.server import BaseHTTPRequestHandler, HTTPServer from subprocess import * import json import os from modules import search from modules import render CSS = "https://zortazert.codeberg.page/style/styles.css" try: with open("port.json","r") as f: json_stuff = json.load(f) PORT = json_stuff["port"] except: PORT = input("Port: ") try: PORT = int(PORT) except: print("Port should be a number") exit() # Who fucking made this http.server so I need to use classes? # I fucking hate who ever thought that it was a good idea... class handler(BaseHTTPRequestHandler): def start_page(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() def send(self, text): text = str(text) csstext = '' text = '
'+csstext+''+text+'' self.start_page() self.wfile.write(text.encode("utf-8")) def do_GET(self): if self.path == "/": # If the user is at the front page, let him get only the search bar page = "" page = render.search_widget(page) page = page + "Please search for any software to which you would like to find a Free Software replacement.
" page = render.source_code_link(page) self.send(page) elif "/search?item=" in self.path: # Clearing the url # instead of it being /search?item=softwarename # it will be just /softwarename item = self.path[self.path.find("item=")+5:].lower() self.send('') else: # This is when the fun is software = self.path.replace("/", "").replace("+", " ") software_data, match = search.search_app(software) page = render.search_widget("") page = page +"Match: "+ str(match*100)+"%" # Let's add the found software to the page page = render.html(page, software_data) page = render.suggestions(page, software_data) page = render.source_code_link(page) self.send(page) serve = HTTPServer(("", PORT), handler) serve.serve_forever()