Compare commits
No commits in common. "4482f85ded576f6b24f7ae32b60bd92b0a52d023" and "5efe4860fc724f4e8c535120c50b0e1d9b5962fc" have entirely different histories.
4482f85ded
...
5efe4860fc
@ -2,6 +2,8 @@ name: Build Docker
|
|||||||
run-name: Build Docker Images
|
run-name: Build Docker Images
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '*'
|
- '*'
|
||||||
|
|
||||||
|
10
README.md
10
README.md
@ -18,10 +18,6 @@ The bot will be used to provide an easier way to manage the master server.
|
|||||||
| Red Connections | Secured by VPN or over LAN ONLY. (NOT API SECURED) |
|
| Red Connections | Secured by VPN or over LAN ONLY. (NOT API SECURED) |
|
||||||
| Yellow Connections | HTTP/HTTPS public traffic |
|
| Yellow Connections | HTTP/HTTPS public traffic |
|
||||||
|
|
||||||
## Features
|
|
||||||
- [x] Add new worker server to master server pool
|
|
||||||
- [x] Create wordpress site on random worker server
|
|
||||||
- [x] Optional Free mode (see Bot section)
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@ -110,9 +106,3 @@ Docker install
|
|||||||
```sh
|
```sh
|
||||||
docker run -d -e MASTER_IP=<MASTER SERVER IP> -e DISCORD_TOKEN=<YOUR-BOT-TOKEN> -e LICENCE_KEY=your-api-key -e WORKER_KEY=your-api-key --name hnshosting-bot git.woodburn.au/nathanwoodburn/hnshosting-bot:latest
|
docker run -d -e MASTER_IP=<MASTER SERVER IP> -e DISCORD_TOKEN=<YOUR-BOT-TOKEN> -e LICENCE_KEY=your-api-key -e WORKER_KEY=your-api-key --name hnshosting-bot git.woodburn.au/nathanwoodburn/hnshosting-bot:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
Enable the free mode by setting the following environment variable.
|
|
||||||
This will allow you to create a wordpress site without using a licence key using the /createsite command.
|
|
||||||
```
|
|
||||||
FREE_MODE: true
|
|
||||||
```
|
|
@ -13,14 +13,9 @@ Master_Port = os.getenv('MASTER_PORT')
|
|||||||
if Master_Port == None:
|
if Master_Port == None:
|
||||||
Master_Port = "5000"
|
Master_Port = "5000"
|
||||||
|
|
||||||
FREE_LICENCE = os.getenv('FREE_MODE')
|
FREE_LICENCE = os.getenv('FREE_LICENCE')
|
||||||
if FREE_LICENCE == None:
|
if FREE_LICENCE == None:
|
||||||
FREE_LICENCE = False
|
FREE_LICENCE = False
|
||||||
else:
|
|
||||||
if FREE_LICENCE.lower() == "true":
|
|
||||||
FREE_LICENCE = True
|
|
||||||
else:
|
|
||||||
FREE_LICENCE = False
|
|
||||||
|
|
||||||
intents = discord.Intents.default()
|
intents = discord.Intents.default()
|
||||||
client = discord.Client(intents=intents)
|
client = discord.Client(intents=intents)
|
||||||
@ -55,6 +50,7 @@ async def listworkers(ctx):
|
|||||||
@tree.command(name="licence", description="Gets a licence key")
|
@tree.command(name="licence", description="Gets a licence key")
|
||||||
async def license(ctx):
|
async def license(ctx):
|
||||||
if ctx.user.id != ADMINID:
|
if ctx.user.id != ADMINID:
|
||||||
|
if FREE_LICENCE == False: # If free licences are enabled then anyone can get a licence
|
||||||
await ctx.response.send_message("You do not have permission to use this command",ephemeral=True)
|
await ctx.response.send_message("You do not have permission to use this command",ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -69,17 +65,7 @@ async def license(ctx):
|
|||||||
await ctx.response.send_message(f"Error getting license\n" + r.text,ephemeral=True)
|
await ctx.response.send_message(f"Error getting license\n" + r.text,ephemeral=True)
|
||||||
|
|
||||||
@tree.command(name="createsite", description="Create a new WordPress site")
|
@tree.command(name="createsite", description="Create a new WordPress site")
|
||||||
async def createsite(ctx, domain: str, licence: str = None):
|
async def createsite(ctx, domain: str, licence: str):
|
||||||
if FREE_LICENCE == True: # If free licences are enabled then auto generate a licence
|
|
||||||
r = requests.post(f"http://{Master_IP}:{Master_Port}/add-licence",headers={"key":os.getenv('LICENCE_KEY')})
|
|
||||||
if r.status_code == 200:
|
|
||||||
json = r.json()
|
|
||||||
if json['success'] == "true":
|
|
||||||
licence = json['licence_key']
|
|
||||||
else:
|
|
||||||
await ctx.response.send_message(f"Error getting license\n" + json['error'])
|
|
||||||
return
|
|
||||||
|
|
||||||
r = requests.post(f"http://{Master_IP}:{Master_Port}/new-site?domain={domain}",headers={"key":licence})
|
r = requests.post(f"http://{Master_IP}:{Master_Port}/new-site?domain={domain}",headers={"key":licence})
|
||||||
if r.status_code == 200:
|
if r.status_code == 200:
|
||||||
json = r.json()
|
json = r.json()
|
||||||
|
@ -37,22 +37,14 @@ def new_site():
|
|||||||
|
|
||||||
# Verify both API key and domain exist
|
# Verify both API key and domain exist
|
||||||
if api_key == None:
|
if api_key == None:
|
||||||
return jsonify({'error': 'No licence provided', 'success': 'false'})
|
return jsonify({'error': 'Missing API key', 'success': 'false'})
|
||||||
|
|
||||||
if domain == None:
|
if domain == None:
|
||||||
return jsonify({'error': 'Missing domain', 'success': 'false'})
|
return jsonify({'error': 'Missing domain', 'success': 'false'})
|
||||||
|
|
||||||
# Check if API key is a valid site key
|
# Check if API key is a valid site key
|
||||||
key_file = open('/data/licence_key.txt', 'r')
|
if api_key not in open('/data/licence_key.txt', 'r').read():
|
||||||
valid_key = False
|
return jsonify({'error': 'Invalid API key', 'success': 'false'})
|
||||||
for line in key_file.readlines():
|
|
||||||
if api_key == line.strip('\n'):
|
|
||||||
valid_key = True
|
|
||||||
break
|
|
||||||
key_file.close()
|
|
||||||
if not valid_key:
|
|
||||||
return jsonify({'error': 'Invalid licence', 'success': 'false'})
|
|
||||||
|
|
||||||
|
|
||||||
# Check if domain already exists
|
# Check if domain already exists
|
||||||
if site_exists(domain):
|
if site_exists(domain):
|
||||||
|
Loading…
Reference in New Issue
Block a user