Merge branch 'master' of https://notabug.org/jyamihud/FreeCompetitors
This commit is contained in:
commit
b2504187c6
4 changed files with 64 additions and 16 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
port.json
|
||||
config.json
|
||||
*.pyc
|
||||
|
|
|
@ -23,7 +23,7 @@ The software is built on Python. So you will need to have python3 installed. The
|
|||
|
||||
`python3 server.py`
|
||||
|
||||
It will prompt you to select a `PORT` to which on your end to bind the server. For now it binds it to your localhost. You can edit that part. We are using a standard SimpleHTTPServer python module for it.
|
||||
On first run, you will be prompted to edit the newly created `config.json`. You should set the URL to be the URL in which you are hosting **Free Competitors** (ex. `http://5wxkwfl6n4abwjsqv5r6roebwbc7fnc22dq3clpooojzdmdnzzo3amad.onion/`). If you do not wish to set a URL, you should set it to `/`. Then, you should specify the port to serve on, and the CSS to use.
|
||||
|
||||
Please tell us if you start an instance. We want to add it's link here.
|
||||
|
||||
|
|
|
@ -145,16 +145,19 @@ def suggestions(page, json):
|
|||
page = page + "</details>"
|
||||
return page
|
||||
|
||||
def search_widget(page):
|
||||
def search_widget(page, address):
|
||||
|
||||
# Adds a search bar to the page
|
||||
|
||||
page = page + """
|
||||
<form action="/search" method="GET">
|
||||
<form action="""
|
||||
page = page + address
|
||||
page = page + """search method="GET">
|
||||
<input type="text" name="item" class="search" placeholder="Name of Software">
|
||||
<button type="submit">Search</button>
|
||||
</form>
|
||||
"""
|
||||
#page = page.format(ADDRESS)
|
||||
|
||||
return page
|
||||
|
||||
|
|
68
server.py
68
server.py
|
@ -1,3 +1,5 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
# THIS SOFTWARE IS A PART OF FREE COMPETITOR PROJECT
|
||||
# THE FOLLOWING SOURCE CODE I UNDER THE GNU
|
||||
# AGPL LICENSE V3 OR ANY LATER VERSION.
|
||||
|
@ -15,18 +17,59 @@ import os
|
|||
from modules import search
|
||||
from modules import render
|
||||
|
||||
CSS = "https://zortazert.codeberg.page/style/styles.css"
|
||||
# Author: https://www.delftstack.com/howto/python/python-print-colored-text/
|
||||
class bcolors:
|
||||
OK = '\033[92m' #GREEN
|
||||
WARNING = '\033[93m' #YELLOW
|
||||
FAIL = '\033[91m' #RED
|
||||
RESET = '\033[0m' #RESET COLOR
|
||||
|
||||
try:
|
||||
with open("port.json","r") as f:
|
||||
json_stuff = json.load(f)
|
||||
PORT = json_stuff["port"]
|
||||
except:
|
||||
PORT = input("Port: ")
|
||||
try:
|
||||
print("""╔═╗┬─┐┌─┐┌─┐╔═╗┌─┐┌┬┐┌─┐┌─┐┌┬┐┬┌┬┐┌─┐┬─┐┌─┐
|
||||
╠╣ ├┬┘├┤ ├┤ ║ │ ││││├─┘├┤ │ │ │ │ │├┬┘└─┐
|
||||
╚ ┴└─└─┘└─┘╚═╝└─┘┴ ┴┴ └─┘ ┴ ┴ ┴ └─┘┴└─└─┘
|
||||
|
||||
Copyright (C) 2022 Jeison Yehuda Amihud
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
""")
|
||||
|
||||
print("Loading config...")
|
||||
if os.path.exists("config.json"):
|
||||
with open("config.json","r") as f:
|
||||
srvConfig = json.load(f)
|
||||
ADDRESS = srvConfig["address"]
|
||||
PORT = srvConfig["port"]
|
||||
CSS = srvConfig["css"]
|
||||
print(bcolors.OK + "Loaded Configuration: " + bcolors.RESET)
|
||||
print("Address: "+ ADDRESS)
|
||||
print("Port: "+ str(PORT)) # Do not think people are smart at syntax
|
||||
print("CSS: "+ CSS)
|
||||
try:
|
||||
PORT = int(PORT)
|
||||
except:
|
||||
print("Port should be a number")
|
||||
except:
|
||||
print(bcolors.FAIL + "ERR: Port should be a number" + bcolors.RESET)
|
||||
exit()
|
||||
else:
|
||||
newConfig = open("config.json", "w")
|
||||
newConfig.write("""{
|
||||
"INFO" : "You would be better off setting address to the full URL of the FreeCompetitors instance.",
|
||||
"address" : "/",
|
||||
"port" : 8080,
|
||||
"css" : "https://zortazert.codeberg.page/style/styles.css"
|
||||
}""")
|
||||
newConfig.close
|
||||
print(bcolors.WARNING + "Please edit the configuration file \"config.json\"." + bcolors.RESET)
|
||||
exit()
|
||||
|
||||
# Who fucking made this http.server so I need to use classes?
|
||||
|
@ -73,7 +116,7 @@ class handler(BaseHTTPRequestHandler):
|
|||
# If the user is at the front page, let him get only the search bar
|
||||
|
||||
page = "<center><br><br><br><h1>Free Competitors</h1>"
|
||||
page = render.search_widget(page)
|
||||
page = render.search_widget(page, ADDRESS)
|
||||
page = page + "<p>Please search for any software to which you would like to find a Free Software replacement.</p></center>"
|
||||
page = render.source_code_link(page)
|
||||
self.send(page)
|
||||
|
@ -95,7 +138,7 @@ class handler(BaseHTTPRequestHandler):
|
|||
|
||||
software_data, match = search.search_app(software)
|
||||
|
||||
page = render.search_widget("")
|
||||
page = render.search_widget("", ADDRESS)
|
||||
page = page +"Search match: "+ str(int(match*100))+"%"
|
||||
# Let's add the found software to the page
|
||||
page = render.html(page, software_data)
|
||||
|
@ -105,4 +148,5 @@ class handler(BaseHTTPRequestHandler):
|
|||
self.send(page)
|
||||
|
||||
serve = HTTPServer(("", PORT), handler)
|
||||
print(bcolors.OK + "⚡Now serving on port "+ str(PORT) +" at "+ ADDRESS +"." + bcolors.RESET)
|
||||
serve.serve_forever()
|
||||
|
|
Loading…
Reference in a new issue