Beispiel #1
0
def index():
    if not 'authorized' in session:
        return redirect(url_for('index'))

    account = Account.get(email=session["account"])

    if request.method == "GET":
        return render_template('account.html',
                               session=session,
                               account=account,
                               success=None)

    else:
        limits = JSON.parse(fs.createReadStream('data/token_limits.json'))
        admins = JSON.parse(fs.createReadStream('data/admin_accounts.json'))
        restricted = JSON.parse(
            fs.createReadStream('data/restricted_accounts.json'))

        if session['account'] in admins:
            limit = limits['admin']
        elif session['account'] in restricted:
            limit = limits['restricted']
        else:
            limit = limits['default']

        new_token = ''.join([
            random.choice(string.ascii_letters + string.digits)
            for i in range(4)
        ]) + '.' + ''.join([
            random.choice(string.ascii_letters + string.digits)
            for i in range(20)
        ])
        Account.update(account["_id"], token=new_token, limit=limit)
        return render_template('account.html',
                               session=session,
                               account=Account.get(_id=account['_id']),
                               success="You generated a new API token!")
Beispiel #2
0
    def get(self):
        if not 'Authorization' in request.headers:
            return abort(401, message="Not authorized")

        token = request.headers['Authorization']

        if not account_handler.Account.get(token=token):
            return abort(401, message="Invalid authorization")

        if check_ratelimit(token):
            return abort(
                429,
                message=
                "You have exceeded the maximum allowed requests for your account."
            )

        else:
            add_use(token)
            words = JSON.parse(fs.createReadStream("storage/words.json"))
            return random.choice(words)
Beispiel #3
0
"""

from flask import Flask, render_template, redirect, url_for

import humanfriendly

from PyJS import JSON
from PyJS.modules import fs

from core import discordAPI
from core.database import Servers
from core.routes import route_for

app = Flask(__name__)

settings = JSON.parse(fs.createReadStream('settings.json'))
settings["len"] = len
settings["human"] = humanfriendly


@app.errorhandler(404)
def _404Err(err):
    return redirect(url_for('index'))


@app.route("/")
def index():
    return render_template('index.html', servers=Servers.get_all(), **settings)


@app.route(**route_for('view_server_default'), defaults={"serverID": None})
Beispiel #4
0
from cryptography.fernet import Fernet

from PyJS.modules import fs

security = Fernet(fs.createReadStream("data/key.key").chunk().encode('utf-8'))

def encrypt(token):
    return security.encrypt(token.encode('utf-8'))

def decrypt(token):
    return security.decrypt(token).decode('utf-8')
Beispiel #5
0
def index():
    examples = {}
    for example in os.listdir("./data/examples"):
        examples[example] = fs.createReadStream(
            f"./data/examples/{example}").chunk()
    return render_template("index.html", examples=examples, session=session)
Beispiel #6
0
def route_for(route):
    return JSON.parse(fs.createReadStream('data/routes.json'))[route]
Beispiel #7
0
from pymongo import MongoClient
from PyJS import JSON
from PyJS.modules import fs

col = MongoClient(JSON.parse(
    fs.createReadStream('settings.json'))['mongo'])['BytesBump']['servers']


class Servers:
    def get_all(**checks):
        return [server for server in col.find(checks)]

    def get_one(**checks):
        return col.find_one(checks)
Beispiel #8
0
from flask import request
from flask_restful import Resource, abort

import random, requests, json

from PyJS import JSON
from PyJS.modules import fs

from handlers import account_handler, reddit_handler, genius_handler

reddit_config = JSON.parse(fs.createReadStream("data/reddit_config.json"))

reddit_client = reddit_handler.RedditHandler(**reddit_config)


def fetch(fp, text=True):
    with open(f"storage/{fp}", "r") as f:
        return json.load(f) if not text else f.read()


def check_ratelimit(token):
    account = account_handler.Account.get(token=token)
    if not account["limit"]:
        return False

    if not "uses" in account:
        account_handler.accounts.update_one({"token": token},
                                            {"$set": {
                                                "uses": 0
                                            }})
        return False
Beispiel #9
0
from pymongo import MongoClient

from PyJS import JSON
from PyJS.modules import fs

client = MongoClient(
    JSON.parse(fs.createReadStream('data/config.json'))['mongo'])["database"]


def get_col(col_name):
    return client[col_name]
Beispiel #10
0
import lyricsgenius

from flask_restful import abort

from PyJS import JSON
from PyJS.modules import fs

genius = lyricsgenius.Genius(
    JSON.parse(fs.createReadStream("data/config.json"))["genius"])


def get(name, author):
    song = genius.search_song(name, author if author else "")
    if not song:
        return abort(400, message="Song not found!")

    return {"title": song.title, "artist": song.artist, "lyrics": song.lyrics}
Beispiel #11
0
def route(query):
    return JSON.parse(fs.createReadStream('data/routes.json'))[query]