コード例 #1
0
async def create_client(ipc_client=None):
    if ipc_client is None:
        ipc_client = ipc.Client(host=getenv('IPC_HOST'),
                                port=getenv('IPC_PORT'),
                                secret_key=getenv('IPC_PASSWORD'))
        try:
            await ipc_client.request("get_guild_count")
        except ClientConnectorError:
            ipc_client = None
        except ConnectionResetError:
            ipc_client = ipc.Client(host=getenv('IPC_HOST'),
                                    port=getenv('IPC_PORT'),
                                    secret_key=getenv('IPC_PASSWORD'))
    return ipc_client
コード例 #2
0
ファイル: server.py プロジェクト: oliver-ni/2022-bot
from discord.ext import ipc
from starlette.applications import Starlette
from starlette.responses import PlainTextResponse, Response
from starlette.templating import Jinja2Templates

import config

ipc_client = ipc.Client(secret_key=config.SECRET_KEY)
app = Starlette(debug=True)

templates = Jinja2Templates(directory="templates")

msg_dict = {
    "unknown-error": (
        "alert-circle",
        "Error",
        "An unknown error has occurred. Please try again later.",
    ),
    "not-found": (
        "alert-circle",
        "Error",
        "The authorization request was not found. It may have expired. Please try again.",
    ),
    "approved": (
        "checkmark-circle",
        "Approved",
        "You have been approved! You can now close this tab and return to Discord.",
    ),
    "rejected": (
        "close-circle",
        "Rejected",
コード例 #3
0
from quart import Quart

from discord.ext import ipc

app = Quart(__name__)
ipc_client = ipc.Client(secret_key="my_secret_key") # secret_key must be the same as your server

@app.before_first_request
async def before():
    app.ipc_node = await ipc_client.discover() # discover IPC Servers on your network

@app.route("/")
async def index():
    member_count = await app.ipc_node.request("get_member_count", guild_id=12345678) # get the member count of server with ID 12345678

    return str(member_count) # display member count

if __name__ == "__main__":
    app.run()
コード例 #4
0
from dotenv import load_dotenv

logging.basicConfig(
    level=logging.INFO,
    filename="server.log",
    datefmt="%m/%d/%Y %I:%M:%S %p",
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    filemode="w",
)

load_dotenv()
IPC_SECRET_KEY = os.getenv("IPC_SECRET_KEY")

app = Quart(__name__)
ipc_client = ipc.Client(secret_key=IPC_SECRET_KEY)


def authenticate_request(key):
    return key == os.getenv("API_KEY")


@app.route("/test")
def test():
    return "this is a test"


@app.route("/submit_application", methods=["POST"])
async def submit_application():
    app.logger.info("/submit_application post received.")
コード例 #5
0
from quart import Quart, render_template, request, session, redirect, url_for
from quart_discord import DiscordOAuth2Session
from discord.ext import ipc

app = Quart(__name__)
ipc_client = ipc.Client(secret_key="Swas")

app.config["SECRET_KEY"] = "test123"
app.config["DISCORD_CLIENT_ID"] = 726655948302843934  # Discord client ID.
app.config[
    "DISCORD_CLIENT_SECRET"] = "L0hmWrcyZoLUCeY5FIC2dKbwqjqzDrZv"  # Discord client secret.
app.config["DISCORD_REDIRECT_URI"] = "http://127.0.0.1:5000/callback"

discord = DiscordOAuth2Session(app)


@app.route("/")
async def home():
    return await render_template("index.html")


@app.route("/login")
async def login():
    return await discord.create_session()


@app.route("/callback")
async def callback():
    try:
        await discord.callback()
    except:
コード例 #6
0
import os
from datetime import timedelta

import requests
from requests_oauthlib import OAuth2Session
from quart import Quart, request, redirect, render_template, session, url_for
#from flask import Flask, request, redirect, render_template, session, url_for
from quart_discord import DiscordOAuth2Session, requires_authorization, models
from routes.discord_oauth import DiscordOauth
from discord.ext import ipc

app = Quart(__name__)
ipc_client = ipc.Client(secret_key="aswedfghjuygfvcdxs")
app.secret_key = "aswedfghjuygfvcdxs"
os.environ[
    "OAUTHLIB_INSECURE_TRANSPORT"] = "true"  # !! Only in development environment.

app.config["DISCORD_CLIENT_ID"] = id
app.config["DISCORD_CLIENT_SECRET"] = 'secret'
app.config["DISCORD_BOT_TOKEN"] = 'token'
app.config["DISCORD_REDIRECT_URI"] = "http://127.0.0.1:5000/redirect"

discord = DiscordOAuth2Session(app)


@app.route('/')
async def index():
    return redirect('/home')


@app.route('/home')
コード例 #7
0
import hmac
import logging

import toml
from discord.ext import ipc
from quart import Quart, request, Response

logger = logging.getLogger(__name__)

app = Quart(__name__)

config = toml.load('config.toml')
ipc_client = ipc.Client(secret_key=config['global']['ipc_secret'])


@app.route('/webhook', methods=['POST'])
async def respond():
    token = request.headers.get('Digest').split("=", 1)[1]
    request_data = await request.get_data()
    new_digest = hmac.new(key=config['server']['signature'].encode(),
                          msg=request_data,
                          digestmod="md5").hexdigest()
    comparison = hmac.compare_digest(token, new_digest)
    json = await request.json
    if comparison:
        sent = await ipc_client.request('on_webhook_received',
                                        request_json=json)
        if sent:
            logger.info(f"[{request.host}] Status: Success")
            return Response(status=200, response={"Status": "Success"})
        else:
コード例 #8
0
ファイル: dashboard.py プロジェクト: RedstoneCraft/Morandi-R
import config
from quart import Quart, render_template, request, session, redirect, url_for
from quart_discord import DiscordOAuth2Session
from discord.ext import ipc
from utils import database
from globals import modules

app = Quart(__name__,
            static_folder="web/public",
            template_folder="web/templates")
ipc_client = ipc.Client(secret_key=config.ipc_key)

app.config["SECRET_KEY"] = config.secret_key
app.config["DISCORD_CLIENT_ID"] = config.discord_client_id
app.config["DISCORD_CLIENT_SECRET"] = config.discord_client_secret
app.config["DISCORD_REDIRECT_URI"] = config.discord_redirect_uri

discord = DiscordOAuth2Session(app)

##################  DASHBOARD ##################


@app.route("/")
async def home():
    authorized = await discord.authorized
    if authorized == True:
        return redirect("/dashboard")
    else:
        return await render_template("index.html")

コード例 #9
0
    'loggers': {
        'quart.app': {
            'level': 'ERROR',
        },
        'quart.serving': {
            'level': 'ERROR',
        },
    },
})

template_folder_path = os.path.abspath('Website/src')
static_folder_path = os.path.abspath('Website/static')
app = Quart(__name__,
            template_folder=template_folder_path,
            static_folder=static_folder_path)
ipc_client = ipc.Client(secret_key=bot.env_vars["IPC_SECRET"])
app.config["SECRET_KEY"] = str(bot.env_vars["SECRET_KEY"])
app.config["DISCORD_CLIENT_ID"] = int(
    bot.env_vars["DISCORD_CLIENT_ID"])  # Discord client ID.
app.config["DISCORD_CLIENT_SECRET"] = str(
    bot.env_vars["DISCORD_CLIENT_SECRET"])  # Discord client secret.
app.config["DISCORD_REDIRECT_URI"] = str(bot.env_vars["DISCORD_REDIRECT_URI"])
discord_auth = DiscordOAuth2Session(app)


class DiscordClient:
    def __init__(self):
        self.bot = discord.Client(intents=discord.Intents.all())

    async def get_guild(self, id):
        await self.bot.wait_until_ready()
コード例 #10
0
ファイル: api.py プロジェクト: Kile/Killua
import sys, os
from discord.ext import ipc
from quart import jsonify, Quart, request

SCRIPT_DIR = os.path.dirname(os.path.abspath(
    __file__))  # This is a necessary hacky fix for importing issues
sys.path.append(os.path.dirname(SCRIPT_DIR))

from static.constants import PASSWORD, IPC_TOKEN

app = Quart(__name__)
ipc_client = ipc.Client(secret_key=IPC_TOKEN)


async def is_authorised(headers: dict) -> bool:
    if not "Authorization" in headers:
        return False

    if headers["Authorization"] != PASSWORD:
        return False

    return True


@app.route('/vote/', methods=['POST', 'PUT'])
async def vote():
    """Handles a vote event and calls the right function within the bots code"""

    if not await is_authorised(request.headers):
        return jsonify({"error": "Unauthorised"}), 401
コード例 #11
0
ファイル: server.py プロジェクト: Finleyyy/davobot
import os

from discord.ext import ipc
from quart import Quart, render_template, redirect, url_for, request, session, flash, abort, send_from_directory, \
    jsonify

import davobot

app = Quart(__name__)
ipc_client = ipc.Client(secret_key=davobot.ipc_secret)

app.config.update({
    'DEBUG': True,
    'SECRET_KEY': '4Zh85UDeI2KwfTMxD4px2hGHjUqy2t1w',
    'USERNAME': '******',
    'PASSWORD': '******',
})


@app.before_first_request
async def before():
    app.ipc_node = await ipc_client.discover()  # discover IPC Servers on your network


@app.route('/favicon.ico', methods=['GET'])
async def favicon():
    return await send_from_directory(os.path.join(app.root_path, 'static/media'),
                                     'favicon.ico', mimetype='image/vnd.microsoft.icon')


@app.route('/login/', methods=['GET', 'POST'])
コード例 #12
0
from discord.ext import ipc
from . import web_utils
import os, utils

# paths
BASE_DIR = os.path.dirname(__file__)

# connect to discord bot
_config = utils.load_bot_config()
IPC_CLIENT = ipc.Client(secret_key=_config['ipc_key'],
                        port=_config['ipc_port'])
コード例 #13
0
from quart import Quart, Response
from discord.ext import ipc
import utils

# connect to bot
config = utils.load_bot_config()
ipc_client = ipc.Client(secret_key=config['ipc_key'], port=config['ipc_port'])

# start web app
app = Quart(__name__)


@app.route("/")
async def index():
    import time
    ping_time = await ipc_client.request('ping')
    ping_time = time.time_ns() - ping_time
    content = f"Pong in {ping_time / 10**6:.1f} ms!"

    return Response(f"""<html>
	<head></head>
	</body><p>{content}</p></body>
	</html>""")


if __name__ == "__main__":
    app.run()
コード例 #14
0
ファイル: main.py プロジェクト: RockEZCool/JamEater
from quart import Quart, render_template, request, session, redirect, url_for, jsonify
from quart_discord import DiscordOAuth2Session
from discord.ext import ipc
import html
import json

app = Quart(__name__)
ipc_client = ipc.Client(secret_key="JamEater")

app.config["SECRET_KEY"] = "test123"
app.config["DISCORD_CLIENT_ID"] = 813008914207080449
app.config["DISCORD_CLIENT_SECRET"] = "zn-ifplp8Z8XVatyFN5DGmRsiOMmdnsJ"
app.config["DISCORD_REDIRECT_URI"] = "https://127.0.0.1:5000/callback"

discord = DiscordOAuth2Session(app)


@app.route("/")
async def home():
    return await render_template("index.html")


@app.route("/login")
async def login():
    return await discord.create_session()


@app.route("/invite/<guildid>")
async def invite(guildid):
    return await discord.create_session(scope=["bot"],
                                        permissions=8,