worker: Added initial files
This commit is contained in:
parent
d4ebe6894e
commit
aa8dc9476e
21
worker/install.sh
Normal file
21
worker/install.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Initial install for all prerequisites for the project.
|
||||||
|
# This makes it quicker to get each site up and running.
|
||||||
|
|
||||||
|
# Update the system
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
|
||||||
|
# Install Docker
|
||||||
|
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
sudo apt update
|
||||||
|
apt-cache policy docker-ce
|
||||||
|
sudo apt install docker-ce -y
|
||||||
|
sudo apt install docker-compose -y
|
||||||
|
|
||||||
|
# Install NGINX
|
||||||
|
sudo apt install nginx -y
|
||||||
|
|
||||||
|
# Install python prerequisites
|
||||||
|
python3 -m pip install -r requirements.txt
|
58
worker/main.py
Normal file
58
worker/main.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# API server
|
||||||
|
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
import dotenv
|
||||||
|
import os
|
||||||
|
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
# API route for POST requests for new-site (takes variable 'domain')
|
||||||
|
@app.route('/new-site', methods=['POST'])
|
||||||
|
def new_site():
|
||||||
|
# Get the URL from the request
|
||||||
|
domain = request.args.get('domain')
|
||||||
|
count = get_sites_count()
|
||||||
|
|
||||||
|
if site_exists(domain):
|
||||||
|
return jsonify({'error': 'Site already exists', 'success': 'false'})
|
||||||
|
|
||||||
|
# Add site to file
|
||||||
|
sites_file = open('sites.txt', 'a')
|
||||||
|
sites_file.write(domain + '\n')
|
||||||
|
|
||||||
|
# Return the domain and the number of sites
|
||||||
|
return jsonify({'domain': domain, 'count': count})
|
||||||
|
|
||||||
|
def get_sites_count():
|
||||||
|
# If file doesn't exist, create it
|
||||||
|
try:
|
||||||
|
sites_file = open('sites.txt', 'r')
|
||||||
|
except FileNotFoundError:
|
||||||
|
sites_file = open('sites.txt', 'w')
|
||||||
|
sites_file.close()
|
||||||
|
sites_file = open('sites.txt', 'r')
|
||||||
|
|
||||||
|
# Return number of lines in file
|
||||||
|
return len(sites_file.readlines())
|
||||||
|
|
||||||
|
def site_exists(domain):
|
||||||
|
# If file doesn't exist, create it
|
||||||
|
try:
|
||||||
|
sites_file = open('sites.txt', 'r')
|
||||||
|
except FileNotFoundError:
|
||||||
|
sites_file = open('sites.txt', 'w')
|
||||||
|
sites_file.close()
|
||||||
|
sites_file = open('sites.txt', 'r')
|
||||||
|
|
||||||
|
# Check if domain is in file
|
||||||
|
if domain in sites_file.read():
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Start the server
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=False, port=5000)
|
4
worker/requirements.txt
Normal file
4
worker/requirements.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
python-dotenv
|
||||||
|
requests
|
||||||
|
flask
|
||||||
|
jsonify
|
Loading…
Reference in New Issue
Block a user