Compare commits
2 Commits
bb8049ad63
...
9f09063734
Author | SHA1 | Date | |
---|---|---|---|
9f09063734 | |||
c492feb380 |
40
bot.py
40
bot.py
@ -3,6 +3,7 @@ import os
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import discord
|
import discord
|
||||||
from discord import app_commands
|
from discord import app_commands
|
||||||
|
import re
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
TOKEN = os.getenv('DISCORD_TOKEN')
|
TOKEN = os.getenv('DISCORD_TOKEN')
|
||||||
@ -11,6 +12,9 @@ intents = discord.Intents.default()
|
|||||||
client = discord.Client(intents=intents)
|
client = discord.Client(intents=intents)
|
||||||
tree = app_commands.CommandTree(client)
|
tree = app_commands.CommandTree(client)
|
||||||
|
|
||||||
|
icann_regex = r'^https://[a-z0-9]+(\.[a-z0-9]+)+(/[a-zA-Z0-9-.]*)*$'
|
||||||
|
handshake_regex = r'^[a-z0-9]+(\.[a-z0-9]+)*$'
|
||||||
|
|
||||||
@tree.command(name = "mirror", description = "Create a mirror of an ICANN site on a Handshake domain")
|
@tree.command(name = "mirror", description = "Create a mirror of an ICANN site on a Handshake domain")
|
||||||
async def mirror(interaction, handshakedomain: str, icannurl: str):
|
async def mirror(interaction, handshakedomain: str, icannurl: str):
|
||||||
print("Creating mirror to " + icannurl + " from " + handshakedomain + "...")
|
print("Creating mirror to " + icannurl + " from " + handshakedomain + "...")
|
||||||
@ -18,7 +22,16 @@ async def mirror(interaction, handshakedomain: str, icannurl: str):
|
|||||||
await interaction.response.send_message("Please use https:// for the ICANN URL", ephemeral=True)
|
await interaction.response.send_message("Please use https:// for the ICANN URL", ephemeral=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not re.match(icann_regex, icannurl):
|
||||||
|
await interaction.response.send_message("Please use a valid ICANN URL", ephemeral=True)
|
||||||
|
return
|
||||||
|
if not re.match(handshake_regex, handshakedomain):
|
||||||
|
await interaction.response.send_message("Please use a valid Handshake domain", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
await interaction.response.send_message("Creating mirror to " + icannurl + " from " + handshakedomain + "..." + "\nCheck your DM for the status of your mirror.", ephemeral=True)
|
await interaction.response.send_message("Creating mirror to " + icannurl + " from " + handshakedomain + "..." + "\nCheck your DM for the status of your mirror.", ephemeral=True)
|
||||||
|
|
||||||
# Get user from interaction
|
# Get user from interaction
|
||||||
user = interaction.user
|
user = interaction.user
|
||||||
handshakedomain_str = str(handshakedomain)
|
handshakedomain_str = str(handshakedomain)
|
||||||
@ -45,6 +58,10 @@ async def mirror(interaction, handshakedomain: str, icannurl: str):
|
|||||||
@tree.command(name = "delete", description = "Delete a Handshake domain from the system")
|
@tree.command(name = "delete", description = "Delete a Handshake domain from the system")
|
||||||
async def delete(interaction, handshakedomain: str):
|
async def delete(interaction, handshakedomain: str):
|
||||||
print("Deleting " + handshakedomain + "...")
|
print("Deleting " + handshakedomain + "...")
|
||||||
|
|
||||||
|
if not re.match(handshake_regex, handshakedomain):
|
||||||
|
await interaction.response.send_message("Please use a valid Handshake domain", ephemeral=True)
|
||||||
|
return
|
||||||
await interaction.response.send_message("Deleting " + handshakedomain + "..." + "\nCheck your DM for status.", ephemeral=True)
|
await interaction.response.send_message("Deleting " + handshakedomain + "..." + "\nCheck your DM for status.", ephemeral=True)
|
||||||
# Get user from interaction
|
# Get user from interaction
|
||||||
user = interaction.user
|
user = interaction.user
|
||||||
@ -82,6 +99,10 @@ async def list(interaction):
|
|||||||
|
|
||||||
@tree.command(name = "tlsa", description = "Get the TLSA record for an existing Handshake domain")
|
@tree.command(name = "tlsa", description = "Get the TLSA record for an existing Handshake domain")
|
||||||
async def tlsa(interaction, handshakedomain: str):
|
async def tlsa(interaction, handshakedomain: str):
|
||||||
|
if not re.match(handshake_regex, handshakedomain):
|
||||||
|
await interaction.response.send_message("Please use a valid Handshake domain", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
print("Getting TLSA record for " + handshakedomain + "...")
|
print("Getting TLSA record for " + handshakedomain + "...")
|
||||||
# Get user from interaction
|
# Get user from interaction
|
||||||
output = subprocess.check_output(['./tlsa.sh', handshakedomain], stderr=subprocess.STDOUT, text=True)
|
output = subprocess.check_output(['./tlsa.sh', handshakedomain], stderr=subprocess.STDOUT, text=True)
|
||||||
@ -89,10 +110,15 @@ async def tlsa(interaction, handshakedomain: str):
|
|||||||
|
|
||||||
@tree.command(name = "git", description = "Create a website from a git repo of html files")
|
@tree.command(name = "git", description = "Create a website from a git repo of html files")
|
||||||
async def git(interaction, handshakedomain: str, giturl: str):
|
async def git(interaction, handshakedomain: str, giturl: str):
|
||||||
print("Creating website from " + giturl + " on " + handshakedomain + "...")
|
if not re.match(handshake_regex, handshakedomain):
|
||||||
if not giturl.startswith("https://"):
|
await interaction.response.send_message("Please use a valid Handshake domain", ephemeral=True)
|
||||||
await interaction.response.send_message("Please use https:// for the git URL", ephemeral=True)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not re.match(icann_regex, giturl):
|
||||||
|
await interaction.response.send_message("Please use a valid git URL\nThis should be a https url", ephemeral=True)
|
||||||
|
return
|
||||||
|
|
||||||
|
print("Creating website from " + giturl + " on " + handshakedomain + "...")
|
||||||
await interaction.response.send_message("Creating website from " + giturl + " on " + handshakedomain + "..." + "\nCheck your DM for the status of your website.", ephemeral=True)
|
await interaction.response.send_message("Creating website from " + giturl + " on " + handshakedomain + "..." + "\nCheck your DM for the status of your website.", ephemeral=True)
|
||||||
user = interaction.user
|
user = interaction.user
|
||||||
handshakedomain_str = str(handshakedomain)
|
handshakedomain_str = str(handshakedomain)
|
||||||
@ -113,6 +139,9 @@ async def git(interaction, handshakedomain: str, giturl: str):
|
|||||||
|
|
||||||
@tree.command(name = "gitpull", description = "Get the latest changes from a git repo of html files")
|
@tree.command(name = "gitpull", description = "Get the latest changes from a git repo of html files")
|
||||||
async def gitpull(interaction, handshakedomain: str):
|
async def gitpull(interaction, handshakedomain: str):
|
||||||
|
if not re.match(handshake_regex, handshakedomain):
|
||||||
|
await interaction.response.send_message("Please use a valid Handshake domain", ephemeral=True)
|
||||||
|
return
|
||||||
print("Pulling latest changes from " + handshakedomain + "...")
|
print("Pulling latest changes from " + handshakedomain + "...")
|
||||||
await interaction.response.send_message("Pulling changes for " + handshakedomain + "...", ephemeral=True)
|
await interaction.response.send_message("Pulling changes for " + handshakedomain + "...", ephemeral=True)
|
||||||
user = interaction.user
|
user = interaction.user
|
||||||
@ -129,11 +158,6 @@ async def gitpull(interaction, handshakedomain: str):
|
|||||||
await user.send("Changes pulled for " + handshakedomain + "!")
|
await user.send("Changes pulled for " + handshakedomain + "!")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_tlsa(input_string):
|
def get_tlsa(input_string):
|
||||||
lines = input_string.split("\n")
|
lines = input_string.split("\n")
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
Loading…
Reference in New Issue
Block a user